# Выбрасывание исключений в 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`

Напишите свою функцию, которая будет извлекать корень из числа и при этом выбрасывать исключение, если корень извлекается из отрицательного числа.

←→
↑
en ru