In diesem Tutorial lernen Sie anhand von Beispielen die Anweisungen try… catch… finally kennen, um Ausnahmen in JavaScript zu behandeln.
Die try
, catch
und finally
Blöcke werden verwendet Ausnahmen (eine bestimmte Art eines Fehlers) zu handhaben . Bevor Sie sich mit ihnen vertraut machen, müssen Sie die Arten von Fehlern bei der Programmierung kennen.
Arten von Fehlern
Bei der Programmierung kann der Code zwei Arten von Fehlern enthalten:
Syntaxfehler : Fehler in der Syntax. Wenn Sie beispielsweise schreiben consol.log('your result');
, gibt das obige Programm einen Syntaxfehler aus. Die Schreibweise von console
ist ein Fehler im obigen Code.
Laufzeitfehler : Diese Art von Fehler tritt während der Ausführung des Programms auf. Zum Beispiel das
Aufrufen einer ungültigen Funktion oder einer Variablen.
Diese zur Laufzeit auftretenden Fehler werden als Ausnahmen bezeichnet . Nun wollen wir sehen, wie Sie mit diesen Ausnahmen umgehen können.
JavaScript try… catch-Anweisung
Die try… catch
Anweisung wird verwendet, um die Ausnahmen zu behandeln. Die Syntax lautet:
try ( // body of try ) catch(error) ( // body of catch )
Der Hauptcode befindet sich im try
Block. try
Wenn während der Ausführung des Blocks ein Fehler auftritt, wird dieser an den catch
Block weitergeleitet. Der catch
Block behandelt die Fehler gemäß den catch-Anweisungen.
Wenn kein Fehler auftritt, wird der Code im try
Block ausgeführt und der catch
Block übersprungen.
Beispiel 1: Nicht deklarierte Variable anzeigen
// 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); )
Ausgabe
NaN Ein Fehler wurde abgefangen. Fehlermeldung: ReferenceError: a ist nicht definiert
Im obigen Programm ist keine Variable definiert. Wenn Sie versuchen, eine Variable zu drucken, gibt das Programm einen Fehler aus. Dieser Fehler wird im catch
Block abgefangen .
JavaScript versuchen… fangen… endlich Statement
Sie können die try… catch… finally
Anweisung auch verwenden , um Ausnahmen zu behandeln. Der finally
Block wird sowohl ausgeführt, wenn der Code erfolgreich ausgeführt wird, als auch wenn ein Fehler auftritt.
Die Syntax des try… catch… finally
Blocks lautet:
try ( // try_statements ) catch(error) ( // catch_statements ) finally() ( // codes that gets executed anyway )
Beispiel 2: versuchen… fangen… endlich Beispiel
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'); )
Ausgabe
NaN Ein Fehler wurde abgefangen. Fehlermeldung: ReferenceError: a ist nicht definiert. Wird schließlich jedes Mal ausgeführt
Im obigen Programm tritt ein Fehler auf und dieser Fehler wird vom catch
Block abgefangen . Der finally
Block wird in jeder Situation ausgeführt (wenn das Programm erfolgreich ausgeführt wird oder wenn ein Fehler auftritt).
Hinweis : Sie müssen catch
oder finally
Anweisung nach try
Anweisung verwenden. Andernfalls gibt das Programm einen Fehler aus. Nicht erfasster Syntaxfehler: Fehlender Fang oder schließlich nach dem Versuch.
JavaScript try… catch in setTimeout
Das try… catch
wird die Ausnahme nicht abfangen, wenn es in " zeitgesteuertem " Code wie in setTimeout () passiert ist. Beispielsweise,
try ( setTimeout(function() ( // error in the code ), 3000); ) catch (e) ( console.log( "won't work" ); )
Das Obige try… catch
funktioniert nicht, da die Engine das try… catch
Konstrukt bereits verlassen hat und die Funktion später ausgeführt wird.
Der try… catch
Block muss sich innerhalb dieser Funktion befinden, um eine Ausnahme innerhalb einer zeitgesteuerten Funktion abzufangen. Beispielsweise,
setTimeout(function() ( try ( // error in the code ) catch ( console.log( "error is caught" ); ) ), 3000);
Sie können die throw
Anweisung auch mit der try… catch
Anweisung verwenden, um benutzerdefinierte Ausnahmen zu verwenden. Zum Beispiel wird eine bestimmte Zahl durch 0 geteilt . Wenn Sie Infinity
einen Fehler im Programm berücksichtigen möchten, können Sie mithilfe der throw
Anweisung eine benutzerdefinierte Ausnahme auslösen, um diese Bedingung zu behandeln.
Im nächsten Tutorial erfahren Sie mehr über die JavaScript-Throw-Anweisung.