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:

javascriptnew Error('tekst izuzetka');

Zatim ovaj izuzetak treba baciti pomoću komande throw:

javascriptthrow 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:

javascriptfunction 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:

javascriptfunction 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:

javascriptalert( 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:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('pokušavate da delite sa 0, što je zabranjeno');
}
Задание 1

U JavaScript-u pokušaj izvlačenja korena iz negativnog broja ne dovodi do bacanja izuzetka:

javascriptlet 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.