V tej vadnici boste s pomočjo primerov spoznali izjave try… catch … final, ki bodo obvladovale izjeme v JavaScript.
V try
, catch
in finally
bloki se uporabljajo za obdelavo izjem (vrste napake). Preden se naučite zanje, morate vedeti o vrstah napak pri programiranju.
Vrste napak
Pri programiranju sta lahko dve vrsti napak v kodi:
Sintaksna napaka : Napaka v sintaksi. Če na primer pišete consol.log('your result');
, zgornji program vrže sintaksno napako. Črkovanje console
je napaka v zgornji kodi.
Napaka med izvajanjem: Ta vrsta napake se pojavi med izvajanjem programa. Na primer,
klicanje neveljavne funkcije ali spremenljivke.
Te napake, ki se pojavijo med izvajanjem, se imenujejo izjeme . Zdaj pa poglejmo, kako lahko obvladate te izjeme.
JavaScript poskusite … catch izjava
try… catch
Izjava se uporablja za obravnavo izjem. Njegova sintaksa je:
try ( // body of try ) catch(error) ( // body of catch )
Glavna koda je znotraj try
bloka. Med izvajanjem try
bloka gre v primeru, da pride do napake catch
. catch
Blok ročaji napak kot na izjave o ulovu.
Če ne pride do napake, se koda znotraj try
bloka izvrši in catch
blok preskoči.
Primer 1: Prikaži neprijavljeno spremenljivko
// 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); )
Izhod
NaN Ujeta napaka Sporočilo o napaki: ReferenceError: a ni definirana
V zgornjem programu spremenljivka ni definirana. Ko poskušate spremenljivko natisniti, program prikaže napako. Ta napaka je zajeta v catch
bloku.
JavaScript poskusite … ulovite … na koncu Izjava
try… catch… finally
Stavek lahko uporabite tudi za obdelavo izjem. finally
Blok izvaja tako, ko se koda izvaja uspešno, ali če pride do napake.
Sintaksa try… catch… finally
bloka je:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Primer 2: poskusite … ulovite … končno Primer
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'); )
Izhod
NaN Ujeta napaka Sporočilo o napaki: ReferenceError: a ni definirano Končno se bo izvedlo vsakič
V zgornjem programu pride do napake in to napako ujame catch
blok. finally
Blok bo izvrši v vsakem položaju (če se program izvaja uspešno, ali če pride do napake).
Opomba : Uporabiti morate izjavo catch
ali izjavo. V nasprotnem primeru bo program vrgel napako Uncaught SyntaxError: Manjka ulov ali končno po poskusu.finally
try
Poskusite JavaScript … ulov v setTimeout
try… catch
Ne bo ulov izjeme, če se je to zgodilo v " potekla " kodo, kot v setTimeout (). Na primer
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Zgoraj try… catch
ne bo delovalo, ker je motor že zapustil try… catch
konstrukcijo in se funkcija izvaja pozneje.
try… catch
Blok mora biti v tej funkciji ujeti izjemo znotraj časovno funkcijo. Na primer
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Lahko uporabite tudi throw
izjavo z try… catch
izjavo, da uporabite uporabniško določene izjeme. Na primer, določeno število je deljeno z 0 . Če želite v programu šteti Infinity
za napako, lahko z uporabo throw
stavka za obravnavo tega stanja vržete uporabniško določeno izjemo .
Izjavo o metanju JavaScripta boste izvedeli v naslednji vadnici.