Úvod do výjimečných situací v JavaScriptu
Nyní se budeme zabývat výjimečnými situacemi v JavaScriptu. Pro začátek udělám úvod, ve kterém budou příklady výjimečných situací obecně pro jakékoli programovací jazyky, a potom si rozebereme, jak je tomu v JavaScriptu.
Když píšeme naše programy, implicitně počítáme s tím, že všechny programově-technické mechanismy, které používáme, budou fungovat správně.
To však není vždy pravda. Při přenosu dat po síti dojde k přerušení spojení a data k nám přicházejí ve nesprávné podobě, nebo vůbec nepřijdou. Při zápisu souboru se ukáže, že vyhrazené místo na pevném disku došlo, a soubor nelze zapsat. Při čtení souboru se ukáže, že takový soubor neexistuje a nemáme jej odkud číst. Při tisku dat na tiskárnu dojde k přerušení kabelu spojujícího tiskárnu a počítač.
Všechny popsané situace mají společnou podstatu: dojde k nějaké poruše, která vede k nemožnosti nebo nesmyslnosti dokončení plánované operace.
Existují také situace, ve kterých dojde k nějaké chybě, která není poruchou. Například, zeptáte se uživatele na jeho email, a on zadá email v nesprávném formátu. Je jasné, že náš program nemůže pokračovat v zpracování emailu, protože není správný. Ale přesto to - není výjimečná situace. Náš program může sám situaci napravit: vypíše chybovou zprávu a uživatel zopakuje svůj vstup.
Ve skutečnosti je rozdíl mezi poruchou a neporuchou velmi nejasný. Událost, kterou jeden program může považovat za výjimečnou situaci, jiný program může považovat za nějakou chybu, se kterou se dokáže vypořádat.
Kritérium je následující: pokud při vzniku problému může váš program pokračovat v provádění toho, pro co je určen, pak to není výjimečná situace, a pokud nemůže - pak ano, je to výjimka.
Například, máme program, který má požádat o email uživatele. Pokud uživatel zadal email v nesprávném formátu - to není porucha. Je to očekávaný problém a náš program se bude uživatele ptát na email tolikrát, dokud jej nezadá správně.
Nechť náš program, který se ptá na email, musí také tento správný email odeslat přes internet. Přitom se ukáže, že internet nefunguje. To už je problém: program nemůže nijak odeslat data přes internet, pokud internet nefunguje. Program však přesto může pokračovat ve svém provedení: může zobrazit informaci o problému, opakovat pokus o odeslání po nějaké době, a tak dále. Ale tyto akce již nejsou úplně tím, pro co byl program určen, protože hlavní akce - odeslání emailu - program provést nemůže.
Velmi často to, zda je situace výjimečná nebo ne, závisí na programovacím jazyce. V mnoha jazycích, pokud najednou došlo k dělení nulou - je to považováno za výjimku (protože nelze dělit nulou), ale v JavaScriptu - není (v JavaScriptu lze dělit nulou).