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:
new Error('text výnimky');
Potom je potrebné túto výnimku vyhodiť pomocou
príkazu throw:
throw 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:
function 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:
function 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:
alert( 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ť:
try {
alert( div(3, 0) );
} catch (error) {
alert('pokúšate sa deliť nulou, čo je zakázané');
}
V JavaScripte pokus o extrakciu odmocniny zo záporného čísla nevedie k vyhodeniu výnimky:
let 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.