Geschrieben von

JavaScript: try/catch

WebDev

Error-Handling (Fehlerbehandlung) wird in JavaScript oft mit asynchronen Abläufen und AJAX-Calls in Verbindung gesetzt. Dabei kommen die Keywords try{}, catch{}, finally{} und throw{} zum Einsatz:

  • Mit dem try{}-Statement prüft man einen Codeblock auf Errors
  • Mit dem catch{}-Statement kann man auf den Fehler reagieren
  • Mit throw{} kann man eigene Errors definieren
  • Mit finally{} lässt sich Code nach try{} und catch{} ausführen, unabhängig vom Ergebnis

Beispiel und Syntax

Gehen wir vom folgenden Code aus:

try {
  console.log('Start');
  fehlerVariable;
  console.log('Weiter');
} catch (err) {
  console.log('Error vorhanden:' + err);
} finally {
  console.log('Wird immer ausgeführt');
};

Dabei bekommen wir folgendes Ergebnis:

Start
Error vorhanden:ReferenceError: fehlerVariable is not defined
Wird immer ausgeführt

Was ist hier passiert: Zunächst wird der Code innerhalb try{} “versucht” auszuführen. Die erste Zeile logt “Start” in die Konsole. Dann folgt ein Fehler, da wir auf eine nicht deklarierte Variable zugreifen möchten. Aus diesem Grund – da es einen Fehler gibt – springt das Programm in das catch-Statement und führt nichts weiter innerhalb try{} mehr aus. Zum Schluss wird finally{} ausgeführt, unabhängig ob ein Fehler vorhanden ist oder nicht.

Wenn wir aber den Code wie folgt ausbessern:

try {
  console.log('Start');
  var fehlerVariable = 0;
  console.log('Weiter');
} catch (err) {
  console.log('Error vorhanden:' + err);
} finally {
  console.log('Wird immer ausgeführt');
};

Dann bekommen wir folgendes Ergebnis:

Start
Weiter
Wird immer ausgeführt

Da es innerhalb des try-Statement keinen Fehler gibt, wird der komplette Code ausgeführt. catch{} wird dadurch nicht aktiviert.