Этот перевод не завершён. Пожалуйста, помогите перевести эту статью с английского
Конструктор Error создаёт объект ошибки. Экземпляры объекта Error выбрасываются при возникновении ошибок во время выполнения. Объект Error также может использоваться в качестве базового для пользовательских исключений. Смотрите ниже стандартные встроенные типы ошибок.
Синтаксис
new Error([message[, fileName[, lineNumber]]])
Параметры
messageНеобязательный- Человеко-читаемое описание ошибки.
fileNameНеобязательный- Значение свойства
fileNameсозданного объектаError. Значением по умолчанию является имя файла, содержащего код, вызвавший конструкторError(). lineNumberНеобязательный- Значение свойства
lineNumberсозданного объектаError. Значением по умолчанию является номер строки, содержащей вызов конструктораError().
Описание
Во время выполения кода ошибки приводят к созданию и выбрасыванию новых объектов Error.
Данная страница документирует использование объекта Error как самого по себе, так и при использовании в качестве функции-конструктора. Список свойств и методов, унаследованых экземплярами объекта Error, смотрите в разделе Error.prototype.
Использование как функции
Когда Error используется как функции-- без new, она возвращает Error объект. Следовательно простой вызов Error произведет тот же результат, что и конструктор Error объявленный через new.
// this: const x = Error('I was created using a function call!'); // Такая жефункциональность: const y = new Error('I was constructed via the "new" keyword!');
Типы ошибок
Кроме общего конструктора Error, в JavaScript существует ещё семь других основных конструкторов ошибок. По обработке исключений смотрите раздел Выражения обработки исключений.
EvalError- Создаёт экземпляр, представляющий ошибку, возникающую в глобальной функции
eval(). InternalError- Создаёт экземпляр, представляющий ошибку, возникающую при выбрасывании внутренней ошибки в движке JavaScript. К примеру, ошибки «слишком глубокая рекурсия» («too much recursion»).
RangeError- Создаёт экземпляр, представляющий ошибку, возникающую при выходе числовой переменной или параметра за пределы допустимого диапазона.
ReferenceError- Создаёт экземпляр, представляющий ошибку, возникающую при разыменовывании недопустимой ссылки.
SyntaxError- Создаёт экземпляр, представляющий синтаксическую ошибку, возникающую при разборе исходного кода в функции
eval(). TypeError- Создаёт экземпляр, представляющий ошибку, возникающую при недопустимом типе для переменной или параметра.
URIError- Создаёт экземпляр, представляющий ошибку, возникающую при передаче в функции
encodeURI()илиdecodeURI()недопустимых параметров.
Свойства
Error.prototype- Позволяет добавлять свойства в экземпляры объекта
Error.
Методы
Глобальный объект Error не содержит собственных методов, однако, он наследует некоторые методы из цепочки прототипов.
Экземпляры объекта Error
Все экземпляры Error и экземпляры неуниверсальных ошибок наследуются от Error.prototype. Как и со всеми функциями-конструкторами, вы можете использовать прототип конструктора для добавления свойств и методов ко всем экземплярам, создаваемым этим конструктором.
Свойства
Стандартные свойства
Error.prototype.constructor- Определяет функцию, создающую прототип экземпляра ошибки.
Error.prototype.message- Сообщение ошибки.
Error.prototype.name- Название ошибки.
Расширения вендоров
Не стандартно
Эта возможность не является стандартной и стандартизировать её пока никто не собирается. Не используйте её на сайтах, смотрящих во внешний мир: она будет работать не у всех пользователей. Также могут присутствовать большие несовместимости между реализациями и её поведение может в будущем измениться.
Microsoft
Error.prototype.description- Описание ошибки. Аналогично свойству
message. Error.prototype.number- Номер ошибки.
Mozilla
Error.prototype.fileName- Путь к файлу, в котором возникла эта ошибка.
Error.prototype.lineNumber- Номер строки в файле, в котором возникла эта ошибка.
Error.prototype.columnNumber- Номер колонки в строке, на которой возникла эта ошибка.
Error.prototype.stack- Стек вызовов.
Методы
Error.prototype.toSource()- Возвращает строку, содержащую исходный код указанного объекта
Error; вы можете использовать это значение для создания нового объекта. Переопределяет методObject.prototype.toSource(). Error.prototype.toString()- Возвращает строку, представляющую указанный объект. Переопределяет метод
Object.prototype.toString().
Примеры
Пример: выбрасывание обычной ошибки
Обычно, вы создаёте объект Error с намерением возбудить ошибку с помощью ключевого слова throw. Вы можете обработать ошибку с помощью конструкции try...catch:
try {
throw new Error('Уупс!');
} catch (e) {
console.log(e.name + ': ' + e.message);
}
Пример: обработка ошибки конкретного типа
Возможно, это следует удалить Вы можете обрабатывать только какой-то определённый вид ошибок, проверяя тип ошибки в свойстве constructor или, если вы пишете для современных движков JavaScript, с помощью ключевого слова instanceof:
try {
foo.bar();
} catch (e) {
if (e instanceof EvalError) {
console.log(e.name + ': ' + e.message);
} else if (e instanceof RangeError) {
console.log(e.name + ': ' + e.message);
}
// ... и т.д.
}
Пример: пользовательские типы ошибок
Вы можете захотеть определить свои собственные типы ошибок, унаследованные от Error, что бы иметь возможноть писать throw new MyError() и использовать instanceof MyError для проверки вида ошибки в обработчике исключений. Ниже продемонстрирован общий подход к выполнению этой задачи.
Предупреждение: обратите внимание, что выбрасывание MyError будет сообщать неправильные номер строки lineNumber и имя файла fileName как минимум, в Firefox.
Также смотрите обсуждение «Какой способ расширения Error в JavaScript более предпочтителен?» на Stackoverflow.
// Создаём новый объект, затем через прототип делаем его наследником конструктора Error.
function MyError(message) {
this.name = 'MyError';
this.message = message || 'Сообщение по умолчанию';
this.stack = (new Error()).stack;
}
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;
try {
throw new MyError();
} catch (e) {
console.log(e.name); // 'MyError'
console.log(e.message); // 'Сообщение по умолчанию'
}
try {
throw new MyError('пользовательское сообщение');
} catch (e) {
console.log(e.name); // 'MyError'
console.log(e.message); // 'пользовательское сообщение'
}
Спецификации
| Спецификация | Статус | Комментарии |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) | Стандарт | Изначальное определение. Реализована в JavaScript 1.1. |
| ECMAScript 5.1 (ECMA-262) Определение 'Error' в этой спецификации. |
Стандарт | |
| ECMAScript 2015 (6th Edition, ECMA-262) Определение 'Error' в этой спецификации. |
Стандарт | |
| ECMAScript (ECMA-262) Определение 'Error' в этой спецификации. |
Живой стандарт |
Совместимость с браузерами
The compatibility table on this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
| Компьютеры | Мобильные | Server | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Error | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 6 | Opera Полная поддержка 4 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
Error() constructor | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 6 | Opera Полная поддержка 4 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
columnNumber | Chrome Нет поддержки Нет | Edge Нет поддержки Нет | Firefox Полная поддержка 1 | IE Нет поддержки Нет | Opera Нет поддержки Нет | Safari Нет поддержки Нет | WebView Android Нет поддержки Нет | Chrome Android Нет поддержки Нет | Firefox Android Полная поддержка 4 | Opera Android Нет поддержки Нет | Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки Нет | nodejs Нет поддержки Нет |
fileName | Chrome Нет поддержки Нет | Edge Нет поддержки Нет | Firefox Полная поддержка 1 | IE Нет поддержки Нет | Opera Нет поддержки Нет | Safari Нет поддержки Нет | WebView Android Нет поддержки Нет | Chrome Android Нет поддержки Нет | Firefox Android Полная поддержка 4 | Opera Android Нет поддержки Нет | Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки Нет | nodejs Нет поддержки Нет |
lineNumber | Chrome Нет поддержки Нет | Edge Нет поддержки Нет | Firefox Полная поддержка 1 | IE Нет поддержки Нет | Opera Нет поддержки Нет | Safari Нет поддержки Нет | WebView Android Нет поддержки Нет | Chrome Android Нет поддержки Нет | Firefox Android Полная поддержка 4 | Opera Android Нет поддержки Нет | Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки Нет | nodejs Нет поддержки Нет |
message | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 6 | Opera Полная поддержка 5 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
name | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 6 | Opera Полная поддержка 4 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
stack | Chrome Полная поддержка 3 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 10 | Opera Полная поддержка 10.5 | Safari Полная поддержка 6 | WebView Android Полная поддержка ≤37 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 11 | Safari iOS Полная поддержка 6 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
toSource | Chrome Нет поддержки Нет | Edge Нет поддержки Нет | Firefox
Нет поддержки
1 — 74
| IE Нет поддержки Нет | Opera Нет поддержки Нет | Safari Нет поддержки Нет | WebView Android Нет поддержки Нет | Chrome Android Нет поддержки Нет | Firefox Android Полная поддержка 4 | Opera Android Нет поддержки Нет | Safari iOS Нет поддержки Нет | Samsung Internet Android Нет поддержки Нет | nodejs Нет поддержки Нет |
toString | Chrome Полная поддержка 1 | Edge Полная поддержка 12 | Firefox Полная поддержка 1 | IE Полная поддержка 6 | Opera Полная поддержка 4 | Safari Полная поддержка 1 | WebView Android Полная поддержка 1 | Chrome Android Полная поддержка 18 | Firefox Android Полная поддержка 4 | Opera Android Полная поддержка 10.1 | Safari iOS Полная поддержка 1 | Samsung Internet Android Полная поддержка 1.0 | nodejs Полная поддержка 0.1.100 |
Легенда
- Полная поддержка
- Полная поддержка
- Нет поддержки
- Нет поддержки
- Нестандартная. Ожидается плохая кросс-браузерная поддержка.
- Нестандартная. Ожидается плохая кросс-браузерная поддержка.
- Смотрите замечания реализации.
- Смотрите замечания реализации.