Выкідванне выключэнняў у JavaScript

У папярэдніх уроках мы вывучылі два месцы, у якіх JavaScript выкідвае выключэнне ў выпадку якіх-небудзь праблем.

У вашым праекце, аднак, могуць быць і іншыя сітуацыі, якія для вас з'яўляюцца выключнымі, а для JavaScript - не. У такім выпадку мы можаце ствараць і выкідваць свае, карыстальніцкія выключэнні.

Давайце разбярэм сінтаксіс, неабходны для гэтага. Для пачатку выключэнне трэба стварыць з дапамогай каманды new Error, параметрам перадаўшы тэкст выключэння:

javascriptnew Error('тэкст выключэння');

Затым гэта выключэнне трэба выкінуць з дапамогай каманды throw:

javascriptthrow new Error('тэкст выключэння');

Выкідванне выключэння прымушае JavaScript лічыць, што здарылася выключная сітуацыя. Гэта значыць, што такое выключэнне можна злавіць з дапамогай канструкцыі try-catch і апрацаваць патрэбным чынам.

Давайце паглядзім на прыкладзе, як гэтым карыстацца. Хай у нас ёсць функцыя, якая дзеліць адно лік на другое:

javascriptfunction div(a, b) {
  return a / b;
}

Давайце будзем лічыць, што дзяленне на нуль забаронена і пры спробе зрабіць гэта павінна ўзнікаць выключная сітуацыя. Для гэтага будзем правяраць у функцыі, ці няма спробы дзяліць на 0. Калі няма - будзем дзяліць, а калі так - будзем кідаць выключэнне:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('памылка дзялення на нуль');
  }
}

Давайце для пачатку проста паспрабуем падзяліць на 0, не перахопліваючы выключэнне:

javascriptalert( div(3, 0) );

У гэтым выпадку выкананне скрыпта перарвецца і ў кансолі з'явіцца памылка з тэкстам 'памылка дзялення на нуль' (праверце). Давайце цяпер будзем перахопліваць нашу памылку і як-небудзь яе апрацоўваць:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('вы спрабуеце дзяліць на 0, што забаронена');
}
Задание 1

У JavaScript спроба зняць корань з адмоўнага ліку не прыводзіць да выкіду выключэння:

javascriptlet result = Math.sqrt(-1);
console.log(result); // выведзе NaN

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