V tej vadnici boste s pomočjo primerov spoznali izjave try… catch … final, ki bodo obvladovale izjeme v JavaScript.
V try, catchin finallybloki 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 consoleje 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… catchIzjava se uporablja za obravnavo izjem. Njegova sintaksa je:
try ( // body of try ) catch(error) ( // body of catch )
Glavna koda je znotraj trybloka. Med izvajanjem trybloka gre v primeru, da pride do napake catch. catchBlok ročaji napak kot na izjave o ulovu.
Če ne pride do napake, se koda znotraj trybloka izvrši in catchblok 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 catchbloku.
JavaScript poskusite … ulovite … na koncu Izjava
try… catch… finallyStavek lahko uporabite tudi za obdelavo izjem. finallyBlok izvaja tako, ko se koda izvaja uspešno, ali če pride do napake.
Sintaksa try… catch… finallybloka 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 catchblok. finallyBlok bo izvrši v vsakem položaju (če se program izvaja uspešno, ali če pride do napake).
Opomba : Uporabiti morate izjavo catchali izjavo. V nasprotnem primeru bo program vrgel napako Uncaught SyntaxError: Manjka ulov ali končno po poskusu.finallytry
Poskusite JavaScript … ulov v setTimeout
try… catchNe 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… catchne bo delovalo, ker je motor že zapustil try… catchkonstrukcijo in se funkcija izvaja pozneje.
try… catchBlok 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 throwizjavo z try… catchizjavo, da uporabite uporabniško določene izjeme. Na primer, določeno število je deljeno z 0 . Če želite v programu šteti Infinityza napako, lahko z uporabo throwstavka za obravnavo tega stanja vržete uporabniško določeno izjemo .
Izjavo o metanju JavaScripta boste izvedeli v naslednji vadnici.








