Operatoren zur Fehlerbehandlung
Fangen Sie Fehler mit catchError ab und versuchen Sie es mit retry erneut.
Operatoren zur Fehlerbehandlung ist eine kostenlose Angular Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Angular Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Angular Academy-Kurs umfasst insgesamt 4 Lektionen.
Fehler in Observables
Wenn ein Observable einen Fehler ausgibt, wird es beendet: Es folgen keine weiteren Werte, und der Fehler-Handler wird ausgeführt. Fehleroperatoren ermöglichen es, Fehler abzufangen, Wiederholungen zu versuchen oder sie umzuwandeln, anstatt den Stream zu unterbrechen.
Der Fehlerpfad
Behandeln Sie Fehler im Observer oder mit Operatoren. Ohne Behandlung kann ein nicht abgefangener Fehler das Abonnement zum Absturz bringen.
this.http.get('/api/data').subscribe({
next: d => console.log(d),
error: err => console.error('failed', err)
});catchError
catchError fängt einen Fehler ab und gibt ein Ersatz-Observable zurück, sodass der Stream kontrolliert fortgesetzt werden kann.
import { catchError, of } from 'rxjs';
this.http.get('/api/data').pipe(
catchError(err => {
console.error(err);
return of([]); // fallback value
})
).subscribe(data => console.log(data));Fehler selektiv erneut auslösen
Innerhalb von catchError können Sie den Fehler untersuchen und entscheiden, ob Sie ihn behandeln oder mit throwError erneut auslösen.
import { catchError, throwError, of } from 'rxjs';
source$.pipe(
catchError(err =>
err.status === 404 ? of(null) : throwError(() => err)
)
).subscribe();retry
retry(n) abonniert die Quelle bei einem Fehler bis zu n-mal erneut – nützlich bei vorübergehenden Netzwerkfehlern.
import { retry } from 'rxjs';
this.http.get('/api/flaky').pipe(
retry(2) // try up to 3 times total
).subscribe(d => console.log(d));retry mit Konfiguration
Die Objektform fügt zwischen den Versuchen eine Verzögerung hinzu und unterstützt eine Backoff-Funktion. So vermeiden Sie, den Server mit Anfragen zu überlasten.
this.http.get('/api/flaky').pipe(
retry({ count: 3, delay: 1000 })
).subscribe(d => console.log(d));Backoff im Stil von retryWhen
Für exponentielles Backoff kann die Option delay eine Funktion sein, die ein Observable zurückgibt und die Verzögerung pro Versuch schrittweise verlängert.
import { timer } from 'rxjs';
source$.pipe(
retry({
delay: (err, count) => timer(count * 1000)
})
).subscribe();catchError nach retry
Kombinieren Sie beide Operatoren: Wiederholen Sie vorübergehende Fehler und greifen Sie anschließend kontrolliert auf eine alternative Lösung zurück, wenn die Wiederholungsversuche ausgeschöpft sind.
this.http.get('/api/data').pipe(
retry({ count: 2, delay: 500 }),
catchError(() => of([]))
).subscribe(data => console.log(data));Die Position ist wichtig
Die Position von catchError in der Pipe bestimmt den Gültigkeitsbereich. Innerhalb von switchMap fängt der Operator Fehler pro innerer Anfrage ab, sodass der äußere Stream aktiv bleibt; am Ende fängt er alle Fehler ab.
term$.pipe(
switchMap(t => this.http.get('/api?q=' + t).pipe(
catchError(() => of([])) // outer stream survives
))
).subscribe();EMPTY als stiller Fallback
Wenn Sie aus catchError EMPTY zurückgeben, wird der Stream ohne Wert abgeschlossen – nützlich, wenn Sie den Fehler unterdrücken und nichts ausgeben möchten.
import { EMPTY, catchError } from 'rxjs';
source$.pipe(
catchError(() => EMPTY)
).subscribe();finalize für Aufräumarbeiten
finalize führt einen Callback aus, wenn der Stream aus irgendeinem Grund endet – durch Abschluss, Fehler oder Abbestellung. Kombinieren Sie den Operator mit der Fehlerbehandlung, um den Ladezustand immer zurückzusetzen.
import { finalize, catchError, of } from 'rxjs';
this.loading = true;
source$.pipe(
catchError(() => of([])),
finalize(() => this.loading = false)
).subscribe();Schnelltest
Testen Sie Ihr Verständnis der Fehlerbehandlung.
Rückblick: Operatoren zur Fehlerbehandlung
Fehler beenden einen Stream, sofern sie nicht behandelt werden.
catchError: Fehler behandeln, indem ein Ersatz-Observable zurückgegeben wird.retry: bei einem Fehler erneut abonnieren, optional mit Verzögerung oder Backoff.- Die Position (innerhalb von switchMap oder am Ende) bestimmt den Gültigkeitsbereich.
Sie haben RxJS Operators in Depth abgeschlossen.
Häufig gestellte Fragen
Ist die Lektion „Operatoren zur Fehlerbehandlung“ kostenlos?
Ja — der vollständige Text von „Operatoren zur Fehlerbehandlung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Angular Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Angular Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Operatoren zur Fehlerbehandlung“?
Fangen Sie Fehler mit catchError ab und versuchen Sie es mit retry erneut. Du übst Angular Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Angular Academy zu starten?
Keine Vorkenntnisse erforderlich. Angular Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.
Wie lange dauert die Lektion „Operatoren zur Fehlerbehandlung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Angular Academy-Lektion Code schreiben und ausführen?
Ja. Jede Angular Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Transformationsoperatoren
- Filteroperatoren
- Kombinationsoperatoren
- Operatoren zur Fehlerbehandlung