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: