Metanje izjem v JavaScript
V prejšnjih lekcijah smo preučili dve mesti, kjer JavaScript vrže izjemo v primeru kakršnih koli težav.
V vašem projektu pa so lahko tudi druge situacije, ki so za vas izjemne, za JavaScript pa ne. V tem primeru lahko ustvarite in metete svoje, uporabniško določene izjeme.
Oglejmo si sintakso, potrebno za
to. Najprej je treba izjemo ustvariti
z ukazom new Error, kot parameter
pa podati besedilo izjeme:
new Error('besedilo izjeme');
Nato to izjemo je treba vreči z ukazom
throw:
throw new Error('besedilo izjeme');
Metenje izjeme prisili JavaScript,
da meni, da je prišlo do izjemne situacije.
To pomeni, da je takšno izjemo mogoče ujeti
z konstrukcijo try-catch in
obravnavati na želeni način.
Oglejmo si na primeru, kako to uporabiti. Recimo, da imamo funkcijo, ki deli eno število z drugim:
function div(a, b) {
return a / b;
}
Menimo, da je deljenje z nič
prepovedano in ob poskusu tega naj bi
prišlo do izjemne situacije. Za to
bomo preverjali v funkciji, ali ni poskusa
deljenja z 0. Če ni - bomo delili,
če pa je - bomo metli izjemo:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('napaka pri deljenju z nič');
}
}
Za začetek preprosto poskusimo deliti
z 0, ne da bi ujeli izjemo:
alert( div(3, 0) );
V tem primeru se bo izvajanje skripta prekinilo
in v konzoli se bo pojavila napaka z besedilom 'napaka
pri deljenju z nič' (preverite). Zdaj
pa ujemimo našo napako in
jo na nek način obravnavajmo:
try {
alert( div(3, 0) );
} catch (error) {
alert('poskušate deliti z 0, kar je prepovedano');
}
V JavaScript poskus pridobivanja korena iz negativnega števila ne povzroči metanja izjeme:
let result = Math.sqrt(-1);
console.log(result); // izpiše NaN
Napišite svojo funkcijo, ki bo pridobivala koren iz števila in pri tem metala izjemo, če se koren pridobiva iz negativnega števila.