Бацање изузетака у ЈаваСкрипту
У претходним лекцијама смо проучили два места на којима ЈаваСкрипт баца изузетак у случају неких проблема.
У вашем пројекту, међутим, могу постојати друге ситуације које су за вас изузетне, али за ЈаваСкрипт нису. У том случају ми можемо креирати и бацати сопствене, корисничке изузетке.
Хајде да погледамо синтаксу потребну за
то. За почетак изузетак треба креирати
помоћу команде new Error, прослеђујући
текст изузетка као параметар:
new Error('текст изузетка');
Затим тај изузетак треба да се баци помоћу
команде throw:
throw new Error('текст изузетка');
Бацање изузетка наводи ЈаваСкрипт
да сматра да се догодила изузетна ситуација.
То значи да се такав изузетак може ухватити
помоћу конструкције 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, што је забрањено');
}
У ЈаваСкрипту покушај извлачења квадратног корена из негативног броја не доводи до бацања изузетка:
let result = Math.sqrt(-1);
console.log(result); // приказаће NaN
Напишите сопствену функцију која ће извлачити квадратни корен из броја и притом бацати изузетак, ако се корен извлачи из негативног броја.