V tomto tutoriáli sa dozviete o príkazoch try… catch… konečne na spracovanie výnimiek v JavaScripte pomocou príkladov.
Tieto try
, catch
a finally
bloky sú používané pre spracovanie výnimiek (typ chyby). Predtým, ako sa o nich dozviete, musíte vedieť o druhoch chýb v programovaní.
Typy chýb
V programovaní môžu byť v kóde dva typy chýb:
Chyba syntaxe : Chyba v syntaxi. Napríklad, ak píšete consol.log('your result');
, vyššie uvedený program spôsobí syntaktickú chybu. Pravopis console
je chybou vo vyššie uvedenom kóde.
Chyba za behu : Tento typ chyby sa vyskytuje počas vykonávania programu. Napríklad
volanie neplatnej funkcie alebo premennej.
Tieto chyby, ktoré sa vyskytnú počas behu modulu, sa nazývajú výnimky . Teraz sa pozrime, ako zvládnete tieto výnimky.
Skúste JavaScript … vyhlásenie o chybe
Príkaz try… catch
sa používa na spracovanie výnimiek. Jeho syntax je:
try ( // body of try ) catch(error) ( // body of catch )
Hlavný kód je vo vnútri try
bloku. Ak sa počas vykonávania try
bloku vyskytne akákoľvek chyba, prejde do catch
bloku. catch
Blok spracováva chyby ako na vyhlásenie o úlovku.
Pokiaľ nedôjde k chybe, try
vykoná sa kód vo vnútri bloku a catch
blok sa preskočí.
Príklad 1: Zobraziť nedeklarovanú premennú
// 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ýkon
NaN Bola zachytená chyba Chybové hlásenie: ReferenceError: a nie je definované
Vo vyššie uvedenom programe nie je premenná definovaná. Pri pokuse o vytlačenie premennej program vyvolá chybu. Táto chyba je zachytená v catch
bloku.
Skúste JavaScript … chytiť … konečne vyhlásenie
Príkaz môžete použiť aj try… catch… finally
na spracovanie výnimiek. finally
Blok vykonáva ako pri kód spustí úspešne, alebo ak dôjde k chybe.
Syntax try… catch… finally
bloku je:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Príklad 2: skúste… chytiť… konečne Prí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ýkon
NaN Bola zachytená chyba Chybová správa: ReferenceError: a nie je definovaná Nakoniec sa vykoná zakaždým
Vo vyššie uvedenom programe sa vyskytne chyba a túto chybu zachytí catch
blok. finally
Blok spustiť v akejkoľvek situácii (ak je program spustený úspešne, alebo ak dôjde k chybe).
Poznámka : Musíte použiť catch
alebo finally
príkaz za try
výpisom. V opačnom prípade program vyhodí chybu Uncaught SyntaxError: Missing catch alebo konečne po vyskúšaní.
Skúste JavaScript … chytiť v setTimeout
try… catch
Nebude zachytiť výnimku, ak sa to stalo " načasované " kódu, ako v setTimeout (). Napríklad,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Vyššie uvedené try… catch
nebude fungovať, pretože motor už opustil try… catch
konštrukciu a funkcia sa vykoná neskôr.
try… catch
Blok musí byť vo vnútri tejto funkcie zachytiť výnimku vnútri časované funkcie. Napríklad,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Príkaz môžete tiež použiť throw
s týmto try… catch
vyhlásením na použitie používateľom definovaných výnimiek. Napríklad určité číslo sa vydelí 0 . Ak chcete program považovať Infinity
za chybu, môžete pomocou throw
príkazu na spracovanie tejto podmienky vyhodiť používateľom definovanú výnimku .
V nasledujúcom návode sa dozviete viac o príkaze JavaScript throw.