Спецификация ECMAScript 5.1 с аннотациями

Поделиться
← 15.10 Объекты RegExp (Регулярное выражение) Содержание15.12 Объект JSON →
    1. 15.11 Объекты Error
      1. 15.11.1 Вызов конструктора Error как функции
        1. 15.11.1.1 Error (message)
      2. 15.11.2 Конструктор Error
        1. 15.11.2.1 new Error (message)
      3. 15.11.3 Свойства конструктора Error
        1. 15.11.3.1 Error.prototype
      4. 15.11.4 Свойства объекта-прототипа Error
        1. 15.11.4.1 Error.prototype.constructor
        2. 15.11.4.2 Error.prototype.name
        3. 15.11.4.3 Error.prototype.message
        4. 15.11.4.4 Error.prototype.toString ( )
      5. 15.11.5 Свойства экземпляров Error
      6. 15.11.6 Собственные типы ошибок, используемые в данном стандарте
        1. 15.11.6.1 EvalError
        2. 15.11.6.2 RangeError
        3. 15.11.6.3 ReferenceError
        4. 15.11.6.4 SyntaxError
        5. 15.11.6.5 TypeError
        6. 15.11.6.6 URIError
      7. 15.11.7 Структура объекта NativeError
        1. 15.11.7.1 Вызов конструкторов NativeError как функций
        2. 15.11.7.2 NativeError (message)
        3. 15.11.7.3 Конструкторы NativeError
        4. 15.11.7.4 New NativeError (message)
        5. 15.11.7.5 Свойства конструкторов NativeError
        6. 15.11.7.6 NativeError.prototype
        7. 15.11.7.7 Свойства объектов-прототипов NativeError
        8. 15.11.7.8 NativeError.prototype.constructor
        9. 15.11.7.9 NativeError.prototype.name
        10. 15.11.7.10 NativeError.prototype.message
        11. 15.11.7.11 Свойства экземпляров NativeError

15.11 Объекты Error #

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

15.11.1 Вызов конструктора Error как функции #

При вызове Error не в качестве конструктора, а в качестве функции, создается и инициализируется новый объект Function. Таким образом, вызов функции Error() эквивалентен выражению для создания объекта new Error() с теми же аргументами.

15.11.1.1 Error (message) #

Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным исходному объекту-прототипу Error, который представляет собой начальное значение свойства Error.prototype (15.11.3.1).

Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error".

Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.

Если аргумент message не равен undefined, то собственное свойство message сообщение создаваемого объекта устанавливается равным ToString(message).

15.11.2 Конструктор Error #

Если Error вызывается как часть выражения new, он является конструктором, так как он инициализирует созданный объект.

15.11.2.1 new Error (message) #

Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным исходному объекту-прототипу Error, который представляет собой начальное значение свойства Error.prototype (15.11.3.1).

Внутреннее свойство [[Class]] создаваемого объекта типа Error устанавливается равным "Error".

Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.

Если аргумент message не равен undefined, то собственное свойство message создаваемого объекта устанавливается равным ToString(message).

15.11.3 Свойства конструктора Error #

Значением внутреннего свойства [[Prototype]] конструктора Error является объект-прототип Function (15.3.4).

Кроме внутренних свойств и свойства length со значением 1, конструктор Error имеет следующее свойство:

15.11.3.1 Error.prototype #

Начальным значением Error.prototype является объект-прототип Error (15.11.4).

Это свойство имеет атрибуты { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

15.11.4 Свойства объекта-прототипа Error #

Объект-прототип Error сам по себе является объектом типа Error (его [[Class]] равен "Error").

Значением внутреннего свойства [[Prototype]] объекта-прототипа Error является стандартный встроенный объект-прототип Object (15.2.4).

15.11.4.1 Error.prototype.constructor #

Начальным значением Error.prototype.constructor является встроенный конструктор Error.

15.11.4.2 Error.prototype.name #

Начальным значением Error.prototype.name является "Error".

15.11.4.3 Error.prototype.message #

Начальным значением Error.prototype.message является пустая строка.

15.11.4.4 Error.prototype.toString ( ) #

Выполняются следующие шаги:

  1. Пусть O будет значением this.

  2. Если Type(O) – не Object, сгенерировать исключение TypeError.

  3. Пусть name будет результатом вызова внутреннего метода [[Get]] для O с аргументом "name".

  4. Если name равно undefined, пусть name буедт "Error"; иначе пусть name будет ToString(name).

  5. Пусть msg будет результатом вызова внутреннего метода [[Get]] для O с аргументом "message".

  6. Если msg равно undefined, пусть msg будет пустой строкой, иначе пусть msg будет ToString(msg).

  7. Если и name и msg являются пустыми строками, вернуть "Error".

  8. Если name равно пустой строке, вернуть msg.

  9. Если msg равно пустой строке, вернуть name.

  10. Вернуть результат конкатенации name, ":", символа одиночного пробела и msg.

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

Экземпляры Error наследуют свойства объекта-прототипа Error. Значение их внутреннего свойства [[Class]] равно "Error". У экземпляров Error отсутствуют специальные свойства.

15.11.6 Собственные типы ошибок, используемые в данном стандарте #

При обнаружении ошибки времени исполнения генерируется один из перечисленных ниже объектов NativeError. У всех этих объектов одинаковая структура, как описано в пункте 15.11.7.

15.11.6.1 EvalError #

В текущей версии данной спецификации это исключение не генерируется. Этот объект остался в тексте в целях совместимости с предыдущими редакциями этой спецификации.

15.11.6.2 RangeError #

Означает, что числовое значение выходит за пределы допустимого диапазона. См. пункты 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.

15.11.6.3 ReferenceError #

Означает, что было обнаружено некорректное контрольное значение. См. пункты 8.7.1, 8.7.2, 10.2.1, 10.2.1.1.4, 10.2.1.2.4 и 11.13.1.

15.11.6.4 SyntaxError #

Означает, что произошла ошибка синтаксического разбора. См. пункты 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.

15.11.6.5 TypeError #

Означает, что полученный тип операнда не соответствует ожидаемому. См. пункты 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.

15.11.6.6 URIError #

Означает, что одна из глобальных функций для обработки URI была использована несовместимым с её определением образом. См. пункт 15.1.3.

15.11.7 Структура объекта NativeError #

Когда реализация ECMAScript обнаруживает ошибку времени исполнения, она генерирует экземпляр одного из объектов типа NativeError, определение которых содержится в пункте 15.11.6. Каждый из этих объектов имеет структуру, описанную ниже. Они отличаются только именем, используемым в качестве имени конструктора вместо NativeError, свойством name объекта-прототипа, и зависящим от реализации свойством message объекта-прототипа.

Для каждого объекта error ссылки на NativeError в определении необходимо заменять на соответствующее имя объекта error из пункта 15.11.6.

15.11.7.1 Вызов конструкторов NativeError как функций #

При вызове NativeError не в качестве конструктора, а в качестве функции, создается и инициализируется новый объект. Вызов объекта в качестве функции эквивалентен его вызову в качестве конструктора с такими же аргументами.

15.11.7.2 NativeError (message) #

Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным объекту-прототипу этого конструктора error. Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error". Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.

Если аргумент message равен undefined, то собственное свойство message создаваемого объекта устанавливается равным ToString(message).

15.11.7.3 Конструкторы NativeError #

Если NativeError вызывается как часть выражения new, он является конструктором, так как он инициализирует созданный объект.

15.11.7.4 New NativeError (message) #

Внутреннее свойство [[Prototype]] создаваемого объекта устанавливается равным объекту-прототипу этого конструктора NativeError. Внутреннее свойство [[Class]] создаваемого объекта устанавливается равным "Error". Внутреннее свойство [[Extensible]] создаваемого объекта устанавливается равным true.

Если аргумент message не равен undefined, то свойство message создаваемого объекта устанавливается равным ToString(message).

15.11.7.5 Свойства конструкторов NativeError #

Значением внутреннего свойства [[Prototype]] конструктора NativeError является объект-прототип Function (15.3.4).

Кроме внутренних свойств и свойства length со значением 1, каждый конструктор NativeError имеет следующее свойство:

15.11.7.6 NativeError.prototype #

Начальным значением NativeError.prototype является объект-прототип NativeError (15.11.7.7). У каждого конструктора NativeError есит отдельный объект-прототип.

Это свойство имеет атрибуты { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false }

15.11.7.7 Свойства объектов-прототипов NativeError #

Каждый объект-прототип NativeError является объектом типа Error (его [[Class]] равен "Error").

Значением внутреннего свойства [[Prototype]] каждого объекта-прототипа NativeError является стандартный встроенный объект-прототип Error (15.11.4).

15.11.7.8 NativeError.prototype.constructor #

Начальным значением свойства constructor прототипа для заданного конструктора NativeError является непосредственно функция-конструктор NativeError (см. пункт 15.11.7).

15.11.7.9 NativeError.prototype.name #

Начальным значением свойства name прототипа для заданного конструктора NativeError является имя конструктора (имя, используемое вместо NativeError).

15.11.7.10 NativeError.prototype.message #

Начальным значением свойства message прототипа для заданного конструктора NativeError является пустая строка.

ПРИМЕЧАНИЕ Прототипы конструкторов NativeError сами по себе не определяют функцию toString – экземпляры ошибок наследуют её у объекта-прототипа Error.

15.11.7.11 Properties of NativeError Instances #

Экземпляры NativeError наследуют свойства объекта-прототипа NativeError. Значение их внутреннего свойства [[Class]] равно "Error". У экземпляров NativeError отсутствуют специальные свойства.