Экземпляры объектов типа Error – исключения, генерируемые при возникновении ошибки времени исполнения. Объекты Error также могут служить базовыми объектами для пользовательских классов-исключений.
При вызове Error
не в качестве конструктора, а в качестве функции, создается и инициализируется новый объект Function. Таким образом, вызов функции Error(
…
)
эквивалентен выражению для создания объекта new Error(
…
)
с теми же аргументами.
Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным исходному объекту-прототипу Error, который представляет собой начальное значение свойства Error.prototype
(15.11.3.1).
Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error"
.
Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.
Если аргумент message не равен undefined, то собственное свойство message
сообщение создаваемого объекта устанавливается равным ToString(message).
Если Error
вызывается как часть выражения new
, он является конструктором, так как он инициализирует созданный объект.
Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным исходному объекту-прототипу Error, который представляет собой начальное значение свойства Error.prototype
(15.11.3.1).
Внутреннее свойство [[Class]] создаваемого объекта типа Error устанавливается равным "Error"
.
Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.
Если аргумент message не равен undefined, то собственное свойство message
создаваемого объекта устанавливается равным ToString(message).
Значением внутреннего свойства [[Prototype]] конструктора Error является объект-прототип Function (15.3.4).
Кроме внутренних свойств и свойства length
со значением 1, конструктор Error имеет следующее свойство:
Начальным значением Error.prototype
является объект-прототип Error (15.11.4).
Это свойство имеет атрибуты { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }
Объект-прототип Error сам по себе является объектом типа Error (его [[Class]] равен "Error"
).
Значением внутреннего свойства [[Prototype]] объекта-прототипа Error является стандартный встроенный объект-прототип Object (15.2.4).
Начальным значением Error.prototype.constructor
является встроенный конструктор Error
.
Начальным значением Error.prototype.name
является "
Error
"
.
Начальным значением Error.prototype.message
является пустая строка.
Выполняются следующие шаги:
Пусть O будет значением this.
Если Type(O) – не Object, сгенерировать исключение TypeError.
Пусть name будет результатом вызова внутреннего метода [[Get]] для O с аргументом "
name
"
.
Если name равно undefined, пусть name буедт "
Error
"
; иначе пусть name будет ToString(name).
Пусть msg будет результатом вызова внутреннего метода [[Get]] для O с аргументом "message"
.
Если msg равно undefined, пусть msg будет пустой строкой, иначе пусть msg будет ToString(msg).
Если и name и msg являются пустыми строками, вернуть "Error"
.
Если name равно пустой строке, вернуть msg.
Если msg равно пустой строке, вернуть name.
Вернуть результат конкатенации name, ":"
, символа одиночного пробела и msg.
Экземпляры Error наследуют свойства объекта-прототипа Error. Значение их внутреннего свойства [[Class]] равно "Error"
. У экземпляров Error отсутствуют специальные свойства.
При обнаружении ошибки времени исполнения генерируется один из перечисленных ниже объектов NativeError. У всех этих объектов одинаковая структура, как описано в пункте 15.11.7.
В текущей версии данной спецификации это исключение не генерируется. Этот объект остался в тексте в целях совместимости с предыдущими редакциями этой спецификации.
Означает, что числовое значение выходит за пределы допустимого диапазона. См. пункты 15.4.2.2, 15.4.5.1, 15.7.4.2, 15.7.4.5, 15.7.4.6 и 15.7.4.7, 15.9.5.43.
Означает, что было обнаружено некорректное контрольное значение. См. пункты 8.7.1, 8.7.2, 10.2.1, 10.2.1.1.4, 10.2.1.2.4 и 11.13.1.
Означает, что произошла ошибка синтаксического разбора. См. пункты 11.1.5, 11.3.1, 11.3.2, 11.4.1, 11.4.4, 11.4.5, 11.13.1, 11.13.2, 12.2.1, 12.10.1, 12.14.1, 13.1, 15.1.2.1, 15.3.2.1, 15.10.2.2, 15.10.2.5, 15.10.2.9, 15.10.2.15, 15.10.2.19, 15.10.4.1, and 15.12.2.
Означает, что полученный тип операнда не соответствует ожидаемому. См. пункты 8.6.2, 8.7.2, 8.10.5, 8.12.5, 8.12.7, 8.12.8, 8.12.9, 9.9, 9.10, 10.2.1, 10.2.1.1.3, 10.6, 11.2.2, 11.2.3, 11.4.1, 11.8.6, 11.8.7, 11.3.1, 13.2, 13.2.3, 15, 15.2.3.2, 15.2.3.3, 15.2.3.4, 15.2.3.5, 15.2.3.6, 15.2.3.7, 15.2.3.8, 15.2.3.9, 15.2.3.10, 15.2.3.11, 15.2.3.12, 15.2.3.13, 15.2.3.14, 15.2.4.3, 15.3.4.2, 15.3.4.3, 15.3.4.4, 15.3.4.5, 15.3.4.5.2, 15.3.4.5.3, 15.3.5, 15.3.5.3, 15.3.5.4, 15.4.4.3, 15.4.4.11, 15.4.4.16, 15.4.4.17, 15.4.4.18, 15.4.4.19, 15.4.4.20, 15.4.4.21, 15.4.4.22, 15.4.5.1, 15.5.4.2, 15.5.4.3, 15.6.4.2, 15.6.4.3, 15.7.4, 15.7.4.2, 15.7.4.4, 15.7.4.8 [?], 15.9.5, 15.9.5.44, 15.10.4.1, 15.10.6, 15.11.4.4 и 15.12.3.
Означает, что одна из глобальных функций для обработки URI была использована несовместимым с её определением образом. См. пункт 15.1.3.
Когда реализация ECMAScript обнаруживает ошибку времени исполнения, она генерирует экземпляр одного из объектов типа NativeError, определение которых содержится в пункте 15.11.6. Каждый из этих объектов имеет структуру, описанную ниже. Они отличаются только именем, используемым в качестве имени конструктора вместо NativeError, свойством name объекта-прототипа, и зависящим от реализации свойством message
объекта-прототипа.
Для каждого объекта error ссылки на NativeError в определении необходимо заменять на соответствующее имя объекта error из пункта 15.11.6.
При вызове NativeError не в качестве конструктора, а в качестве функции, создается и инициализируется новый объект. Вызов объекта в качестве функции эквивалентен его вызову в качестве конструктора с такими же аргументами.
Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным объекту-прототипу этого конструктора error. Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error"
. Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.
Если аргумент message равен undefined, то собственное свойство message
создаваемого объекта устанавливается равным ToString(message).
Если NativeError вызывается как часть выражения new
, он является конструктором, так как он инициализирует созданный объект.
Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным объекту-прототипу этого конструктора NativeError. Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error"
. Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.
Если аргумент message не равен undefined, то свойство message
создаваемого объекта устанавливается равным ToString(message).
Значением внутреннего свойства [[Prototype]] конструктора NativeError является объект-прототип Function (15.3.4).
Кроме внутренних свойств и свойства length
со значением 1, каждый конструктор NativeError имеет следующее свойство:
Начальным значением NativeError.prototype
является объект-прототип NativeError (15.11.7.7). У каждого конструктора NativeError есит отдельный объект-прототип.
Это свойство имеет атрибуты { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }
Каждый объект-прототип NativeError является объектом типа Error (его [[Class]] равен "
Error
"
).
Значением внутреннего свойства [[Prototype]] каждого объекта-прототипа NativeError является стандартный встроенный объект-прототип Error (15.11.4).
Начальным значением свойства constructor
прототипа для заданного конструктора NativeError является непосредственно функция-конструктор NativeError (см. пункт 15.11.7).
Начальным значением свойства name
прототипа для заданного конструктора NativeError является имя конструктора (имя, используемое вместо NativeError).
Начальным значением свойства message
прототипа для заданного конструктора NativeError является пустая строка.
ПРИМЕЧАНИЕ Прототипы конструкторов NativeError сами по себе не определяют функцию toString
– экземпляры ошибок наследуют её у объекта-прототипа Error.
Экземпляры NativeError наследуют свойства объекта-прототипа NativeError. Значение их внутреннего свойства [[Class]] равно "Error"
. У экземпляров NativeError отсутствуют специальные свойства.