V tomto tutoriálu se dozvíte o příkazech try… catch… nakonec ke zpracování výjimek v JavaScriptu pomocí příkladů.
Tyto try
, catch
a finally
bloky jsou používány pro zpracování výjimek (typ chyby). Než se o nich dozvíte, musíte vědět o typech chyb v programování.
Druhy chyb
V programování mohou v kódu být dva typy chyb:
Chyba syntaxe : Chyba v syntaxi. Například pokud píšete consol.log('your result');
, výše uvedený program vyvolá syntaktickou chybu. Pravopis console
je chybou ve výše uvedeném kódu.
Chyba za běhu : K tomuto typu chyby dochází během provádění programu. Například
volání neplatné funkce nebo proměnné.
Tyto chyby, ke kterým dochází za běhu, se nazývají výjimky . Nyní se podívejme, jak tyto výjimky zvládnete.
Zkuste JavaScript … chytit prohlášení
Příkaz try… catch
se používá ke zpracování výjimek. Jeho syntaxe je:
try ( // body of try ) catch(error) ( // body of catch )
Hlavní kód je uvnitř try
bloku. Při provádění try
bloku, pokud dojde k nějaké chybě, přejde do catch
bloku. catch
Blok zpracovává chyby jako na prohlášení o úlovku.
Pokud nedojde k žádné chybě, provede se kód uvnitř try
bloku a catch
blok se přeskočí.
Příklad 1: Zobrazit nedeklarovanou proměnnou
// program to show try… catch in a program const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); // forgot to define variable a console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); )
Výstup
NaN Došlo k chybě Chybová zpráva: ReferenceError: a není definována
Ve výše uvedeném programu není proměnná definována. Při pokusu o tisk proměnné program vyvolá chybu. Tato chyba je zachycena v catch
bloku.
Zkuste JavaScript … chytit … konečně Prohlášení
Příkaz můžete také použít try… catch… finally
ke zpracování výjimek. finally
Blok provádí jak při kód spustí úspěšně, nebo pokud dojde k chybě.
Syntaxe try… catch… finally
bloku je:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Příklad 2: zkuste… chytit… konečně Příklad
const numerator= 100, denominator = 'a'; try ( console.log(numerator/denominator); console.log(a); ) catch(error) ( console.log('An error caught'); console.log('Error message: ' + error); ) finally ( console.log('Finally will execute every time'); )
Výstup
NaN Byla chycena chyba Chybová zpráva: ReferenceError: a není definována Nakonec se provede pokaždé
Ve výše uvedeném programu dojde k chybě a tato chyba je catch
blokem zachycena . finally
Blok spustit v jakékoliv situaci (pokud je program spuštěn úspěšně, nebo pokud dojde k chybě).
Poznámka : Musíte použít příkaz catch
nebo finally
prohlášení za try
příkazem. V opačném případě program vyvolá chybu Uncaught SyntaxError: Missing catch nebo nakonec po vyzkoušení.
Vyzkoušejte JavaScript … chyťte v setTimeout
try… catch
Nebude zachytit výjimku, pokud se to stalo „ načasováno “ kódu, jako v setTimeout (). Například,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Výše uvedené try… catch
nebude fungovat, protože motor již opustil try… catch
konstrukci a funkce se provede později.
try… catch
Blok musí být uvnitř této funkce zachytit výjimku uvnitř časované funkce. Například,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Můžete také použít throw
příkaz s try… catch
příkazem k použití uživatelem definovaných výjimek. Například určité číslo se vydělí 0 . Pokud chcete program považovat Infinity
za chybu, můžete pomocí throw
příkazu ke zpracování této podmínky vyvolat uživatelem definovanou výjimku .
V následujícím kurzu se dozvíte o příkazu JavaScript throw.