Исключениями может быть все что угодно.
В других языках исключения должны быть экземплярами, а затем оператор catch
выбирает, какие исключения нужно перехватить, а какие пропустить через класс экземпляра.
JavaScript, однако, не имеет этой функции. Вы можете только перехватить все исключений, а затем посмотреть на значение, чтобы решить, что с ним делать. Если вы не хотите обрабатывать исключение, вам нужно вручную перехватить пойманное значение. (Это неизбежно делает catch
заявления довольно грязными.)
Вы можете решить реализовать свои исключения как объекты и сравнить их с instanceof
. Или вы можете иметь уникальные непрозрачные значения для сравнения. Или вы можете даже бросить прямые строки или числа, если вы действительно хотите.
Существуют ли встроенные типы исключений (например, NullPointerException)?
Вид. ECMAScript определяет некоторые стандартные классы ошибок: Error
и его подтипы EvalError
, RangeError
, ReferenceError
, SyntaxError
, TypeError
, URIError
. Однако существуют проблемы с реализацией браузера, например try { nonexistentvar; }
дает TypeError
под IE вместо ReferenceError
. И есть много других специфичных для браузера исключений, особенно при работе с DOM.
Не принято использовать эти объекты напрямую, и попытка их подкласса является грязной (поскольку в JavaScript нет системы классов как таковой). Вместо этого вы будете придерживаться своих собственных определенных исключений для использования ваших собственных приложений. Исключения не так широко используются в JavaScript.