Movatterモバイル変換


[0]ホーム

URL:


  1. Веб-технологии для разработчиков
  2. JavaScript
  3. Справочник по JavaScript
  4. Стандартные встроенные объекты
  5. Error

This page was translated from English by the community.Learn more and join the MDN Web Docs community.

View in EnglishAlways switch to English

Error

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨июль 2015 г.⁩.

* Some parts of this feature may have varying levels of support.

Экземпляры объектаError выбрасываются при возникновении ошибок во время выполнения. ОбъектError также может использоваться в качестве базового для пользовательских исключений. Смотрите ниже стандартные встроенные типы ошибок.

Описание

Во время выполнения кода ошибки приводят к созданию и выбрасыванию новых объектовError.

Error являетсясериализуемым объектом, поэтому он может быть клонирован с помощьюstructuredClone() или передан междуворкерами с использованиемpostMessage().

Типы ошибок

Кроме общего конструктораError, в JavaScript существуют другие встроенные конструкторы ошибок, смотрите разделВыражения обработки исключений.

EvalError

Создаёт экземпляр, представляющий ошибку, возникающую в глобальной функцииeval().

RangeError

Создаёт экземпляр, представляющий ошибку, возникающую при выходе числовой переменной или параметра за пределы допустимого диапазона.

ReferenceError

Создаёт экземпляр, представляющий ошибку, возникающую при разыменовывании недопустимой ссылки.

SyntaxError

Создаёт экземпляр, представляющий синтаксическую ошибку, возникающую при разборе исходного кода в функцииeval().

TypeError

Создаёт экземпляр, представляющий ошибку, возникающую при недопустимом типе для переменной или параметра.

URIError

Создаёт экземпляр, представляющий ошибку, возникающую при передаче в функцииencodeURI() илиdecodeURI() недопустимых параметров.

AggregateError

Создаёт экземпляр, представляющий несколько ошибок, обёрнутых в одну. Может быть полезно, например, при работе сPromise.any().

InternalErrorНе стандартно

Создаёт экземпляр, представляющий ошибку, возникающую при выбрасывании внутренней ошибки в движке JavaScript. К примеру, ошибки «слишком глубокая рекурсия» («too much recursion»).

Конструктор

Error()

Создаёт новый объектError.

Статические методы

Error.captureStackTrace()Не стандартно

Нестандартная функция V8, которая создаёт свойствоstack у экземпляраError.

Error.stackTraceLimitНе стандартно

Нестандартное числовое свойство V8, которое ограничивает количество уровней ошибок, включаемых в трассировку стека.

Error.prepareStackTrace()Не стандартноНеобязательный

Нестандартная функция V8, которая (если задана в пользовательском коде) вызывается JavaScript-движком V8 для выбрасывание исключений, позволяя определять нестандартное форматирование трассировки стека.

Свойства экземпляра

Эти свойства определены вError.prototype и есть у всех экземпляровError.

Error.prototype.constructor

Функция-конструктор, создающая экземпляр объекта. Для экземпляровError начальным значением является конструкторError.

Error.prototype.name

Представляет название типа ошибки. Начальным значениемError.prototype.name является"Error". Подклассы (например,TypeError иSyntaxError) имеют собственные значения свойстваname.

Error.prototype.stackНе стандартно

Нестандартное свойство, содержащее трассировку стека.

Эти свойства являются собственными свойствами каждого экземпляраError.

cause

Причина возникновения текущей ошибки — обычно это другая обнаруженная ошибка. Для созданных пользователем объектовError это значение свойстваcause второго аргумента конструктора.

Нестандартное свойство Mozilla, определяющее номер символа в строке, в которой возникла ошибка.

fileNameНе стандартно

Нестандартное свойство Mozilla, определяющее путь к файлу, в котором возникла ошибка.

lineNumberНе стандартно

Нестандартное свойство Mozilla, определяющее номер строки в файле, где возникла ошибка.

message

Сообщение об ошибке. Для созданных пользователем объектовError это строка, передаваемая в качестве первого аргумента конструктора.

Методы экземпляра

Error.prototype.toString()

Возвращает строку, представляющую указанный объект. Переопределяет методObject.prototype.toString().

Примеры

Выбрасывание обычной ошибки

Обычно, вы создаёте объектError с намерением возбудить ошибку с помощью ключевого словаthrow. Вы можете обработать ошибку с помощью конструкцииtry...catch:

js
try {  throw new Error("Ой!");} catch (e) {  console.error(`${e.name}: ${e.message}`);}

Обработка ошибки конкретного типа

Для обработки только определённых типов ошибок можно делать проверку типа с помощью ключевого словаinstanceof:

js
try {  foo.bar();} catch (e) {  if (e instanceof EvalError) {    console.error(`${e.name}: ${e.message}`);  } else if (e instanceof RangeError) {    console.error(`${e.name}: ${e.message}`);  }  // и так далее  else {    // Если ни один из типов не совпал, то оставляем ошибку необработанной    throw e;  }}

Пользовательские типы ошибок

Вы можете захотеть определить свои собственные типы ошибок, унаследованные отError, чтобы иметь возможность возбуждать их с помощьюthrow new MyError() и использоватьinstanceof MyError для проверки вида ошибки в обработчике исключений. Это помогает делать обработку ошибок более понятной.

Также смотрите обсуждение«Какой способ расширения Error в JavaScript более предпочтителен?» на StackOverflow.

Предупреждение:Встроенные подклассы не могут быть надёжно преобразованы в ES6 код, потому что нет возможности создать базовый класс со специфичнымnew.target безReflect.construct(). Требуетсядополнительная конфигурация или ручной вызовObject.setPrototypeOf(this, CustomError.prototype) в конце конструктора, иначе создаваемый экземпляр не будет экземпляромCustomError. СмотритеTypeScript FAQ для получения дополнительной информации.

Примечание:Некоторые браузеры включают конструкторCustomError в трассировку стека при использовании классов ES2015.

js
class CustomError extends Error {  constructor(foo = "bar", ...params) {    // Передаём все аргументы (включая специфичные для производителя движка) родительскому конструктору    super(...params);    // Поддерживаем соответствующую трассировку стека с указанием места возникновения ошибки (доступно только в V8)    if (Error.captureStackTrace) {      Error.captureStackTrace(this, CustomError);    }    this.name = "CustomError";    // Дополнительная отладочная информация    this.foo = foo;    this.date = new Date();  }}try {  throw new CustomError("baz", "bazMessage");} catch (e) {  console.error(e.name); // CustomError  console.error(e.foo); // baz  console.error(e.message); // bazMessage  console.error(e.stack); // stacktrace}

Спецификации

Specification
ECMAScript® 2026 Language Specification
# sec-error-objects

Совместимость с браузерами

Смотрите также

Help improve MDN

Learn how to contribute

This page was last modified on byMDN contributors.


[8]ページ先頭

©2009-2025 Movatter.jp