Выбрасывание исключений в JavaScript
В предыдущих уроках мы изучили два места, в которых JavaScript выбрасывает исключение в случае каких-то проблем.
В вашем проекте, однако, могут быть и другие ситуации, которые для вас являются исключительными, а для JavaScript - нет. В таком случае мы можете создавать и выбрасывать свои, пользовательские исключения.
Давайте разберем синтаксис, необходимый для
этого. Для начала исключение нужно создать
с помощью команды new Error
, параметром
передав текст исключения:
new Error('текст исключения');
Затем это исключение нужно выбросить с помощью
команды throw
:
throw new Error('текст исключения');
Выбрасывание исключения заставляет JavaScript
считать, что случилась исключительная ситуация.
Это значит, что такое исключение можно отловить
с помощью конструкции try-catch
и
обработать нужным образом.
Давайте посмотрим на примере, как этим пользоваться. Пусть у нас есть функция, которая делит одно число на другое:
function div(a, b) {
return a / b;
}
Давайте будем считать, что деление на ноль
запрещено и при попытке сделать это должна
возникать исключительная ситуация. Для этого
будем проверять в функции, нет ли попытки
делить на 0
. Если нет - будем делить,
а если да - будем бросать исключение:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('ошибка деления на ноль');
}
}
Давайте для начала просто попробуем поделить
на 0
, не перехватывая исключение:
alert( div(3, 0) );
В этом случае выполнение скрипта прервется
и в консоли появится ошибка с текстом 'ошибка
деления на ноль'
(проверьте). Давайте
теперь будем перехватывать нашу ошибку и
как-то ее обрабатывать:
try {
alert( div(3, 0) );
} catch (error) {
alert('вы пытаетесь делить на 0, что запрещено');
}
В JavaScript попытка извлечь корень из отрицательного числа не приводит к выбрасыванию исключения:
let result = Math.sqrt(-1);
console.log(result); // выведет NaN
Напишите свою функцию, которая будет извлекать корень из числа и при этом выбрасывать исключение, если корень извлекается из отрицательного числа.