⊗jsSpExcThr 145 of 294 menu

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.

Slovenčina
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Používame cookies na fungovanie stránky, analýzu a personalizáciu. Spracúvanie údajov prebieha v súlade s Politikou ochrany osobných údajov.
prijať všetky nastaviť odmietnuť