Vyhadzovanie výnimiek v JavaScripte

V predchádzajúcich lekciách sme skúmali dve miesta, v ktorých JavaScript vyhadzuje výnimku v prípade nejakých problémov.

V vašom projekte však môžu byť aj iné situácie, ktoré pre vás sú výnimkové, no pre JavaScript - nie. V takom prípade môžete vytvoriť a vyhodiť svoje, používateľské výnimky.

Poďme si rozobrať syntax, potrebnú na to. Na začiatok je potrebné vytvoriť výnimku pomocou príkazu new Error, ako parameter odovzdajte text výnimky:

javascriptnew Error('text výnimky');

Potom je potrebné túto výnimku vyhodiť pomocou príkazu throw:

javascriptthrow new Error('text výnimky');

Vyhodenie výnimky núti JavaScript považovať to za výnimkovú situáciu. To znamená, že takúto výnimku je možné zachytiť pomocou konštrukcie try-catch a spracovať potrebným spôsobom.

Pozrime sa na príklade, ako to použiť. Nech máme funkciu, ktorá delí jedno číslo druhým:

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

Budeme uvažovať, že delenie nulou je zakázané a pri pokuse o to má vzniknúť výnimková situácia. Na to budeme v funkcii kontrolovať, či nedochádza k pokusu deliť 0. Ak nie - budeme deliť, ak áno - vyhodíme výnimku:

javascriptfunction div(a, b) {
  if (b !== 0) {
    return a / b;
  } else {
    throw new Error('chyba delenia nulou');
  }
}

Na začiatok jednoducho skúsme vydeliť 0, bez zachytenia výnimky:

javascriptalert( div(3, 0) );

V tomto prípade sa vykonávanie skriptu preruší a v konzole sa objaví chyba s textom 'chyba delenia nulou' (skontrolujte). Poďme teraz túto chybu zachytiť a nejako ju spracovať:

javascripttry {
  alert( div(3, 0) );
} catch (error) {
  alert('pokúšate sa deliť nulou, čo je zakázané');
}
Задание 1

V JavaScripte pokus o extrakciu odmocniny zo záporného čísla nevedie k vyhodeniu výnimky:

javascriptlet result = Math.sqrt(-1);
console.log(result); // vypíše NaN

Napíšte vlastnú funkciu, ktorá bude extrahovať odmocninu z čísla a pri tom vyhadzovať výnimku, ak sa odmocnina extrahuje zo záporného čísla.