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:

javascriptnew Error('besedilo izjeme');

Nato to izjemo je treba vreči z ukazom throw:

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

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

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

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

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('poskušate deliti z 0, kar je prepovedano');
}
Задание 1

V JavaScript poskus pridobivanja korena iz negativnega števila ne povzroči metanja izjeme:

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