Выкідванне выключэнняў у 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
Напішыце сваю функцыю, якая будзе здымаць корань з ліку і пры гэтым выкідваць выключэнне, калі корань здымаецца з адмоўнага ліку.