In deze tutorial leer je met behulp van voorbeelden over de try… catch… final-statements om uitzonderingen in JavaScript af te handelen.
De blokken try
, catch
en finally
worden gebruikt om uitzonderingen af te handelen (een soort fout). Voordat u er meer over leert, moet u weten welke soorten fouten bij het programmeren zijn.
Soorten fouten
Bij het programmeren kunnen er twee soorten fouten in de code voorkomen:
Syntaxisfout : fout in de syntaxis. Als u bijvoorbeeld schrijft consol.log('your result');
, genereert het bovenstaande programma een syntaxisfout. De spelling van console
is een fout in de bovenstaande code.
Runtime-fout : dit type fout treedt op tijdens de uitvoering van het programma. Bijvoorbeeld het
aanroepen van een ongeldige functie of een variabele.
Deze fouten die tijdens runtime optreden, worden uitzonderingen genoemd . Laten we nu eens kijken hoe u met deze uitzonderingen kunt omgaan.
JavaScript try … catch Statement
De try… catch
instructie wordt gebruikt om de uitzonderingen af te handelen. De syntaxis is:
try ( // body of try ) catch(error) ( // body of catch )
De hoofdcode bevindt zich in het try
blok. Als er tijdens het uitvoeren van het try
blok een fout optreedt, gaat het naar het catch
blok. Het catch
blok behandelt de fouten volgens de catch-instructies.
Als er geen fout optreedt, wordt de code in het try
blok uitgevoerd en wordt het catch
blok overgeslagen.
Voorbeeld 1: niet-gedeclareerde variabele weergeven
// 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); )
Uitvoer
NaN Er is een fout opgetreden Foutmelding: ReferenceError: a is niet gedefinieerd
In het bovenstaande programma is er geen variabele gedefinieerd. Wanneer u de variabele a probeert af te drukken, geeft het programma een foutmelding. Die fout zit in het catch
blok.
JavaScript probeer … vangst … eindelijk Statement
U kunt de try… catch… finally
instructie ook gebruiken om uitzonderingen af te handelen. Het finally
blok wordt uitgevoerd als de code met succes wordt uitgevoerd of als er een fout optreedt.
De syntaxis van try… catch… finally
blok is:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Voorbeeld 2: probeer… vangen… eindelijk Voorbeeld
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'); )
Uitvoer
NaN Er is een fout opgetreden Foutmelding: ReferenceError: a is niet gedefinieerd. Eindelijk wordt elke keer uitgevoerd
In het bovenstaande programma treedt een fout op en die fout wordt door het catch
blok opgevangen . Het finally
blok wordt in elke situatie uitgevoerd (als het programma met succes wordt uitgevoerd of als er een fout optreedt).
Let op : u moet catch
of finally
statement na try
statement gebruiken. Anders geeft het programma een foutmelding Uncaught SyntaxError: Missing catch of uiteindelijk na een poging.
JavaScript probeer … vangen in setTimeout
Het try… catch
zal de uitzondering niet opvangen als het gebeurde in " getimede " code, zoals in setTimeout (). Bijvoorbeeld,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Het bovenstaande try… catch
werkt niet omdat de engine de try… catch
constructie al heeft verlaten en de functie later wordt uitgevoerd.
Het try… catch
blok moet zich binnen die functie bevinden om een uitzondering binnen een getimede functie op te vangen. Bijvoorbeeld,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
U kunt de throw
instructie ook gebruiken met de try… catch
instructie om door de gebruiker gedefinieerde uitzonderingen te gebruiken. Een bepaald getal wordt bijvoorbeeld gedeeld door 0 . Als u Infinity
het programma als een fout wilt beschouwen , kunt u een door de gebruiker gedefinieerde uitzondering genereren met behulp van de throw
instructie om die voorwaarde af te handelen.
In de volgende tutorial leer je over de JavaScript-throw-verklaring.