Ebben az oktatóanyagban megismerheti a try … catch… végül utasításokat, amelyek példák segítségével kezelik a kivételeket a JavaScript-ben.
A try
, catch
és a finally
blokkok a kivételek kezelésére szolgálnak (egy hiba típusa). Mielőtt megismerné őket, ismernie kell a programozás hibáit.
A hibák típusai
A programozás során kétféle hiba lehet a kódban:
Szintaxis hiba : Hiba a szintaxisban. Például, ha írsz consol.log('your result');
, a fenti program szintaktikai hibát dob. A helyesírási console
hiba a fenti kódban.
Futásidejű hiba : Ez a típusú hiba a program futtatása során jelentkezik. Például
érvénytelen függvény vagy változó meghívása.
Ezeket a futás közben fellépő hibákat kivételeknek nevezzük . Most nézzük meg, hogyan tudja kezelni ezeket a kivételeket.
JavaScript try… catch Statement
Az try… catch
utasítás a kivételek kezelésére szolgál. Szintaxisa:
try ( // body of try ) catch(error) ( // body of catch )
A fő kód a try
blokkon belül található. A try
blokk végrehajtása közben , ha bármilyen hiba lép fel, akkor a catch
blokkra megy . A catch
blokk a fogási utasítások szerint kezeli a hibákat.
Ha nem történik hiba, a try
blokk belsejében lévő kód végrehajtásra kerül, és a catch
blokk kihagyásra kerül.
1. példa: A nem bejelentett változó megjelenítése
// 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); )
Kimenet
NaN Hibás hiba Hibaüzenet: ReferenceError: a nincs meghatározva
A fenti programban egy változó nincs meghatározva. Amikor megpróbálja kinyomtatni a változót, a program hibát dob. Ezt a hibát elkapta a catch
blokk.
JavaScript próbáld meg … fogd meg … végül nyilatkozat
Az try… catch… finally
utasítással kivételek kezelésére is használható . A finally
blokk akkor is végrehajtódik, ha a kód sikeresen fut, vagy ha hiba lép fel.
A try… catch… finally
blokk szintaxisa :
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
2. példa: próbáld meg … elkapni … végül példa
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'); )
Kimenet
NaN Hibás hiba Hibaüzenet: ReferenceError: a nincs meghatározva Végül minden alkalommal végrehajtódik
A fenti programban hiba lép fel, és ezt a hibát elkapja a catch
blokk. A finally
blokk bármilyen helyzetben végrehajtásra kerül (ha a program sikeresen fut, vagy ha hiba lép fel).
Megjegyzés : Használnia kell a catch
vagy az finally
utasítás utáni try
utasítást. Ellenkező esetben a program hibát dob Uncaught SyntaxError: Hiányzik a fogás, vagy végül próbálkozás után.
JavaScript próbáld meg … fogd be a setTimeout-ban
Nem try… catch
fogja elkapni a kivételt, ha " időzített " kódban történt , mint például a setTimeout (). Például,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
A fentiek try… catch
nem fognak működni, mert a motor már elhagyta a try… catch
konstrukciót, és a függvény később végrehajtásra kerül.
A try… catch
blokknak a függvényen belül kell lennie ahhoz, hogy kivételt kapjon egy időzített függvényen belül. Például,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Az throw
utasítással együtt try… catch
használhatja a felhasználó által definiált kivételeket is. Például egy bizonyos számot elosztunk 0-val . Ha Infinity
hibának akarja tekinteni a programot, akkor dobhat egy felhasználó által definiált kivételt az throw
utasítás segítségével az adott feltétel kezelésére.
A következő oktatóanyagban megismerheti a JavaScript dobási nyilatkozatot.