АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗jsSpExcThr 145 of 294 menu
Долгожданный Бесплатный курс по выкладке сайта на хостинг. МЫ УЖЕ НАЧАЛИ! Присоединяйтесь к нам!

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

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

enru