JavaScript:
Fehlerbehandlung
Wie geht das:
Hier ist der klassische try-catch
-Block:
try {
// Code, der einen Fehler auslösen könnte
let result = potentiallyRiskyOperation();
console.log('Erfolg:', result);
} catch (error) {
// Was tun, wenn ein Fehler ausgelöst wird
console.error('Hoppla:', error.message);
}
Beispielausgabe, wenn kein Fehler auftritt:
Erfolg: 42
Und wenn ein Fehler auftritt:
Hoppla: Etwas ist schiefgelaufen
Für asynchronen Code, bei dem Promises beteiligt sind, verwenden Sie try-catch
in einer async
-Funktion:
async function fetchData() {
try {
let data = await fetch('https://api.example.com/data');
console.log('Daten abgerufen:', data);
} catch (error) {
console.error('Fehler beim Abrufen der Daten:', error.message);
}
}
fetchData();
Tiefergehend
Die Fehlerbehandlung in JavaScript hat sich weiterentwickelt. In der Vergangenheit (ES3, circa 1999) hatten wir nur den try-catch
-Block. Nicht super flexibel, aber er erledigte seinen Job.
ES6 (2015) führte Promises ein und gab uns .then()
und .catch()
, was es uns ermöglichte, asynchrone Fehler eleganter zu behandeln.
fetch('https://api.example.com/data')
.then(data => console.log('Daten abgerufen:', data))
.catch(error => console.error('Fehler beim Abrufen der Daten:', error.message));
Was Implementierungsdetails angeht: Wenn ein Fehler ausgelöst wird, erstellen JavaScript-Engines ein Error
-Objekt mit nützlichen Eigenschaften wie message
und stack
. Man kann auch benutzerdefinierte Fehlertypen erstellen, indem man die Error
-Klasse erweitert – praktisch für komplexere Apps.
Alternativen? Man könnte die Fehlerbehandlung ignorieren (schlechte Idee), Callbacks mit fehlerersten Parametern verwenden (hallo, Node.js-Stil) oder es wird ausgefeilter mit Bibliotheken und Frameworks, die ihre Ansichten anbieten.
Siehe auch
Für mehr Informationen zur Fehlerbehandlung:
- MDN zu try-catch: MDN try…catch
- Async/Await: MDN async function
- Ein Leitfaden zu Promises: MDN Promises
- Erstellen und Auslösen benutzerdefinierter Fehler: MDN Error