⊗jsSpExcThr 145 of 294 menu

Vyhazování výjimek v JavaScriptu

V předchozích lekcích jsme studovali dvě místa, ve kterých JavaScript vyhazuje výjimku v případě nějakých problémů.

Ve vašem projektu však mohou být i jiné situace, které pro vás jsou výjimečné, ale pro JavaScript - ne. V takovém případě můžete vytvářet a vyhazovat své, uživatelské výjimky.

Pojďme si rozebrat syntaxi, potřebnou k tomuto. Pro začátek je třeba vytvořit výjimku pomocí příkazu new Error, parametrem předat text výjimky:

new Error('text výjimky');

Poté tuto výjimku je třeba vyhodit pomocí příkazu throw:

throw new Error('text výjimky');

Vyhazování výjimky nutí JavaScript považovat, že nastala výjimečná situace. To znamená, že takovou výjimku lze zachytit pomocí konstrukce try-catch a zpracovat potřebným způsobem.

Podívejme se na příkladu, jak toho využívat. Nechť máme funkci, která dělí jedno číslo druhým:

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

Budeme považovat, že dělení nulou je zakázáno a při pokusu o to má vzniknout výjimečná situace. K tomu budeme kontrolovat ve funkci, zda nedochází k pokusu dělit 0. Pokud ne - budeme dělit, a pokud ano - budeme házet výjimku:

function div(a, b) { if (b !== 0) { return a / b; } else { throw new Error('chyba dělení nulou'); } }

Nejprve zkusme prostě vydělit 0, bez zachycení výjimky:

alert( div(3, 0) );

V tomto případě se provedení skriptu přeruší a v konzoli se objeví chyba s textem 'chyba dělení nulou' (zkontrolujte). Nyní budeme zachycovat naši chybu a nějak ji zpracovávat:

try { alert( div(3, 0) ); } catch (error) { alert('pokoušíte se dělit nulou, což je zakázáno'); }

V JavaScriptu pokus o odmocnění záporného čísla nevede k vyhazování výjimky:

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

Napište vlastní funkci, která bude odmocňovat číslo a přitom vyhazovat výjimku, pokud se odmocňuje ze záporného čísla.

uzenidtrhy