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.