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.