Bacanje izuzetaka u JavaScript-u
U prethodnim lekcijama smo proučili dva mesta na kojima JavaScript baca izuzetak u slučaju nekih problema.
U vašem projektu, međutim, mogu postojati i druge situacije koje su za vas izuzetne, a za JavaScript - nisu. U tom slučaju mi možemo kreirati i bacati svoje, korisničke izuzetke.
Hajde da razmotrimo sintaksu neophodnu za
ovo. Za početak, izuzetak je potrebno kreirati
pomoću komande new Error, prosledivši
tekst izuzetka kao parametar:
new Error('tekst izuzetka');
Zatim ovaj izuzetak treba baciti pomoću
komande throw:
throw new Error('tekst izuzetka');
Bacanje izuzetka tera JavaScript
da smatra da se dogodila izuzetna situacija.
To znači da se takav izuzetak može uhvatiti
pomoću konstrukcije try-catch i
obraditi na željeni način.
Pogledajmo na primeru kako se ovo koristi. Neka imamo funkciju koja deli jedan broj drugim:
function div(a, b) {
return a / b;
}
Smatrajmo da je deljenje nulom
zabranjeno i da pri pokušaju da se to uradi treba da
nastane izuzetna situacija. Za ovo
proveravamo u funkciji, da li postoji pokušaj
deljenja sa 0. Ako ne - delićemo,
a ako da - bacamo izuzetak:
function div(a, b) {
if (b !== 0) {
return a / b;
} else {
throw new Error('greška pri deljenju nulom');
}
}
Hajde da prvo jednostavno probamo da podelimo
sa 0, bez hvatanja izuzetka:
alert( div(3, 0) );
U ovom slučaju izvršavanje skripte će se prekinuti
i u konzoli će se pojaviti greška sa tekstom 'greška
pri deljenju nulom' (proverite). Hajde
sada da hvatamo našu grešku i
nekako je obradimo:
try {
alert( div(3, 0) );
} catch (error) {
alert('pokušavate da delite sa 0, što je zabranjeno');
}
U JavaScript-u pokušaj izvlačenja korena iz negativnog broja ne dovodi do bacanja izuzetka:
let result = Math.sqrt(-1);
console.log(result); // ispisaće NaN
Napišite sopstvenu funkciju koja će izvlačiti koren iz broja i pritom bacati izuzetak, ako se koren izvlači iz negativnog broja.