Promises sind in JavaScript sehr wichtig für asynchrones Verhalten, wie zum Beispiel Datenbankaufrufe oder AJAX-Anfragen. Wenn man allerdings Promises verwendet, sollte man auch wissen, wie man mit Fehlern umgeht.
Ein wichtiges Element der Fehlerbehandlung bei Promises ist das `.catch`-Block, das immer am Ende der Promise-Kette stehen sollte. Der `.catch`-Block wird aufgerufen, wenn ein Fehler in einer Promise aufgetreten ist.
```javascript
let promise = new Promise((resolve, reject) => {
throw new Error(“Fehler!”);
});
promise.catch(error => console.log(error.message)); // “Fehler!“
```
In dem obigen Code wird eine neue Promise erstellt. Innerhalb der Promise wird ein Fehler geworfen und diese Promise wird sofort abgelehnt. Das `.catch`-Block, das folgt, behandelt den Fehler, indem es die Fehlermeldung loggt.
Manchmal möchten Sie vielleicht spezifische Aktionen für bestimmte Fehler ausführen. In diesem Fall können Sie verschiedene `.catch`-Blöcke hinzufügen und mit dem Fehler `throw` weiterleiten, wenn Sie ihn nicht behandeln können.
```javascript
promise
.catch(error => {
if (error instanceof SpecificError) {
// Behandle spezifischen Fehler
} else {
// Unbekannte Fehler werfen
throw error;
}
})
.catch(error => {
// Behandle jeden anderen Fehler
});
```
Beachten Sie, dass jeder `.catch`-Block den Fehler fängt, der im vorhergehenden Promise oder `.then`-Block aufgetreten ist. Es ist wichtig zu verstehen, dass, wenn Sie einen Fehler innerhalb eines `.catch`-Block werfen, dieser von einem nachfolgenden `.catch`-Block gefangen werden muss. Ansonsten wird der Fehler stillschweigend ignoriert.
Es ist auch wichtig zu wissen, dass `Promise.all` und `Promise.race` ein Versprechen ablehnen, wenn eines der übergebenen Versprechen abgelehnt wird. In diesen Fällen sollten Sie auch `.catch` verwenden, um Fehler zu behandeln.