Selles õpetuses saate teada proovide… püüdke… lõpuks lausete kohta, kuidas näiteid kasutades JavaScripti erandeid käsitleda.
try
, catch
Ja finally
plokid kasutatakse erandite käsitlemiseks (tüüp viga). Enne nende kohta õppimist peate teadma vigade tüüpe programmeerimisel.
Vigade tüübid
Programmeerimisel võib koodis olla kahte tüüpi vigu:
Süntaksiviga : viga süntaksis. Näiteks kui kirjutate consol.log('your result');
, viskab ülaltoodud programm süntaksivea. Õigekiri console
on viga ülaltoodud koodis.
Käitusaja tõrge : seda tüüpi viga ilmneb programmi käivitamisel. Näiteks
vale funktsiooni või muutuja kutsumine.
Neid tõrkeid, mis ilmnevad käituse ajal, nimetatakse eranditeks . Vaatame nüüd, kuidas saate nende eranditega toime tulla.
JavaScripti proovige … püüdke avaldus
try… catch
Avaldus kasutatakse hakkama erandeid. Selle süntaks on:
try ( // body of try ) catch(error) ( // body of catch )
Põhikood on try
ploki sees . Bloki käivitamisel try
läheb tõrke ilmnemisel catch
plokki. catch
Plokk käepidemed vead ühe saagi avaldusi.
Kui viga ei toimu, try
käivitatakse plokis olev kood ja catch
plokk jäetakse vahele.
Näide 1: deklareerimata muutuja kuvamine
// 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äljund
NaN Viga püütud Veateade: ReferenceError: a pole määratletud
Ülaltoodud programmis pole muutujat määratletud. Kui proovite muutujat printida, viskab programm vea. See viga on catch
blokeeritud.
JavaScripti proovimine … saak … lõpuks avaldus
Lauset saab kasutada ka try… catch… finally
erandite käsitlemiseks. finally
Plokk täidab nii kui kood töötab edukalt või kui tekib viga.
Bloki süntaks try… catch… finally
on:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Näide 2: proovige … püüdke … lõpuks näide
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äljund
NaN Viga tabatud Veateade: ReferenceError: a pole määratletud Lõpuks käivitatakse iga kord
Ülaltoodud programmis ilmneb tõrge ja see viga on catch
blokeeritud. finally
Plokk täidab igas olukorras (kui programm töötab edukalt või kui tekib viga).
Märkus : Sa pead kasutamise catch
või finally
avalduse pärast try
avalduse. Vastasel juhul viskab programm vea Uncaught SyntaxError: Püütakse puudu või lõpuks pärast proovimist.
JavaScripti proovige … püüdke setTimeoutis
try… catch
Ei saagi, välja arvatud juhul, kui see juhtus " ajastatud " koodi, nagu setTimeout (). Näiteks,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Ülaltoodu try… catch
ei toimi, kuna mootor on try… catch
konstruktsioonist juba lahkunud ja funktsioon käivitatakse hiljem.
try… catch
Plokk peab olema sees, et funktsioon püüda erand sees ajastatud funktsiooni. Näiteks,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Samuti saate avaldist kasutada throw
koos try… catch
avaldusega kasutaja määratud erandite kasutamiseks. Näiteks jagatakse teatud arv 0-ga . Kui soovite lugeda Infinity
programmi veana, võite throw
selle tingimuse käsitlemiseks visata lause abil kasutaja määratletud erandi .
JavaScripti viskeavalduse kohta saate teada järgmises õpetuses.