Книга: JavaScript. Подробное руководство, 6-е издание
5.6.5. Инструкция throw
5.6.5. Инструкция throw
Исключение - это сигнал, указывающий на возникновение какой-либо исключительной ситуации или ошибки. Возбуждение исключения (throw
) - это способ просигнализировать о такой ошибке или исключительной ситуации. Перехватить исключение (catch
) - значит обработать его, т. е. предпринять действия, необходимые или подходящие для восстановления после исключения. В JavaScript исключения возбуждаются в тех случаях, когда возникает ошибка времени выполнения и когда программа явно возбуждает его с помощью инструкции throw
. Исключения перехватываются с помощью инструкции try/catch/finally
, которая описана в следующем разделе.
Инструкция throw
имеет следующий синтаксис:
throw выражение;
Результатом выражения может быть значение любого типа. Инструкции throw можно передать число, представляющее код ошибки, или строку, содержащую текст сообщения об ошибке. Интерпретатор JavaScript возбуждает исключения, используя экземпляр класса Error
одного из его подклассов, и вы также можете использовать подобный подход. Объект Error
имеет свойство name
, определяющее тип ошибки, и свойство message
, содержащее строку, переданную функции-конструктору (смотрите описание класса Error
в справочном разделе). Ниже приводится пример функции, которая возбуждает объект Error
при вызове с недопустимым аргументом:
function factorial(x) {
// Если входной аргумент не является допустимым значением, возбуждается исключение!
if (х < 0) throw new Error("x не может быть отрицательным");
// В противном случае значение вычисляется и возвращается нормальным образом
for(var f = 1; х>1; f*=x, х--) /* пустое тело цикла */ ;
return f;
}
Когда возбуждается исключение, интерпретатор JavaScript немедленно прерывает нормальное выполнение программы и переходит к ближайшему[7] обработчику исключений. В обработчиках исключений используется конструкция catch
инструкции try/catch/finally
, описание которой приведено в следующем разделе. Если блок программного кода, в котором возникло исключение, не имеет соответствующей конструкции catch
, интерпретатор анализирует следующий внешний блок программного кода и проверяет, связан ли с ним обработчик исключений. Это продолжается до тех пор, пока обработчик не будет найден. Если исключение генерируется в функции, не содержащей инструкции try/catch/finally
, предназначенной для его обработки, то исключение распространяется выше, в программный код, вызвавший функцию. Таким образом исключения распространяются по лексической структуре методов JavaScript вверх по стеку вызовов. Если обработчик исключения так и не будет найден, исключение рассматривается как ошибка и о ней сообщается пользователю.
- 5.6.4. Инструкция return
- 5.6.6. Инструкция try
- Инструкция IIF
- Инструкция INSERT INTO ... FROM ... UNION ...
- Что дает грамотная должностная инструкция
- При запуске программы появляется сообщение Инструкция по адресу 0х77ddb1d1 обратилась к памяти по адресу 0x0080002c. Пам...
- Инструкция по обработке
- Инструкция утверждения
- Throwing Exceptions Using the throw Statement
- Rethrowing Exceptions
- Приложение 1. Как создать вики-страницу: пошаговая инструкция
- Приложение III Инструкция «Прием входящего звонка»