Kivételek eldobása a JavaScript-ben

Az előző leckékben megismertük két olyan helyzetet, amikor a JavaScript kivételt dob bizonyos problémák esetén.

A projektedben azonban előfordulhatnak olyan helyzetek, amelyek számodra kivételesek, de a JavaScript számára nem. Ilyen esetekben létrehozhatunk és eldobhatunk saját, egyéni kivételeket.

Nézzük meg ennek szükséges szintaxisát. Először is létre kell hoznunk a kivételt a new Error paranccsal, paraméterként átadva a kivétel szövegét:

javascriptnew Error('a kivétel szövege');

Ezután ezt a kivételt a throw paranccsal kell eldobnunk:

javascriptthrow new Error('a kivétel szövege');

A kivétel eldobása azt jelenti a JavaScript számára, hogy kivételes helyzet állt elő. Ez azt jelenti, hogy ez a kivétel elkapható a try-catch szerkezettel és a kívánt módon kezelhető.

Nézzünk egy példát ennek a használatára. Tegyük fel, hogy van egy függvényünk, amely eloszt egy számot egy másikkal:

javascriptfunction div(a, b) {
  return a / b;
}

Tegyük fel, hogy a nullával való osztás tilos, és ennek megkísérlésekor kivételes helyzetnek kell előállnia. Ehhez ellenőrizni fogjuk a függvényben, hogy nem 0-val próbálunk-e osztani. Ha nem - elosztjuk, ha igen - kivételt dobunk:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('nullával való osztás hibája');
  }
}

Először egyszerűen próbáljunk meg elosztani 0-val, anélkül, hogy elkapnánk a kivételt:

javascriptalert( div(3, 0) );

Ebben az esetben a szkript végrehajtása megszakad és a konzolon megjelenik a 'nullával való osztás hibája' szöveggel a hiba (ellenőrizd). Most pedig kapjuk el a mi hibánkat és kezeljük valahogy:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('nullával próbálsz osztani, ami tilos');
}
Задание 1

A JavaScript-ben a negatív szám gyökvonásának megkísérlése nem vezet kivétel eldobásához:

javascriptlet result = Math.sqrt(-1);
console.log(result); // NaN-t fog kiírni

Írj egy saját függvényt, amely egy számból von gyököt és közben kivételt dob, ha a gyököt negatív számból kívánjuk vonni.