Lifecycle-Hook onErrorCaptured
Fehler von Kindkomponenten abfangen, mit false die Weitergabe stoppen und Fehlerobjekte verarbeiten
Lifecycle-Hook onErrorCaptured ist eine kostenlose Vue Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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 Vue Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Fehler in Komponenten abfangen
Vue stellt den Lifecycle-Hook onErrorCaptured bereit, um Fehler abzufangen, die von Nachkommen geworfen werden. Dadurch kann eine übergeordnete Komponente Fehler aus ihrem Teilbaum abfangen.
Die Hook-Signatur
onErrorCaptured erhält drei Argumente: den Fehler, die Instanz der Komponente, die ihn ausgelöst hat, und einen info-String, der beschreibt, wo er aufgetreten ist.
import { onErrorCaptured } from "vue";
onErrorCaptured((err, instance, info) => {
// handle it
});Das err-Argument
Das erste Argument ist das geworfene Fehlerobjekt – normalerweise eine Error-Instanz mit einer Meldung und einem Stacktrace, die Sie protokollieren oder anzeigen können.
onErrorCaptured((err) => {
console.error("Captured:", err.message);
});Das instance-Argument
Das zweite Argument ist die Komponenteninstanz, die den Fehler ausgelöst hat. Sie ist zum Debuggen oder zum Ergänzen Ihrer Berichte um Kontext nützlich.
onErrorCaptured((err, instance) => {
console.log("From component:", instance);
});Das info-Argument
Das dritte Argument ist ein String, der angibt, welcher Lifecycle oder Vorgang den Fehler ausgelöst hat – beispielsweise "render function", "setup function" oder ein bestimmter Hook.
onErrorCaptured((err, instance, info) => {
console.log("Vue context:", info);
});Nur Fehler von Nachkommen
Wichtig ist, dass onErrorCaptured Fehler von Nachkommen abfängt, nicht aus dem eigenen setup oder Rendern der Komponente. Platzieren Sie den Hook in einer übergeordneten Komponente des Codes, den Sie schützen möchten.
Propagation stoppen
Standardmäßig wird ein abgefangener Fehler weiterhin an übergeordnete Handler und den globalen Handler weitergegeben. Geben Sie false zurück, um die weitere Weitergabe zu stoppen.
onErrorCaptured((err) => {
reportError(err);
return false; // do not propagate
});Warum die Propagation stoppen
Wenn Sie false zurückgeben, bleibt der Fehler lokal – das ist nützlich, wenn diese Komponente den Fehler vollständig behandelt (z. B. einen Fallback anzeigt) und der globale Handler nicht ebenfalls ausgelöst werden soll.
Weitergabe zulassen
Wenn übergeordnete Handler oder auch der globale Handler den Fehler sehen sollen, geben Sie false nicht zurück. Der Hook protokolliert den Fehler dann lokal und lässt ihn weiter nach oben laufen.
onErrorCaptured((err) => {
logLocally(err);
// no return -> still propagates
});Eine praktische Anwendung
Eine häufige Anwendung ist die Kombination aus Protokollierung und einem Wiederherstellungs-Flag. Setzen Sie ein reaktives Flag, um einen Fallback zu rendern, und melden Sie den Fehler gleichzeitig zu Diagnosezwecken.
const failed = ref(false);
onErrorCaptured((err) => {
failed.value = true;
report(err);
return false;
});Besonderheiten bei asynchronen Fehlern
onErrorCaptured fängt Fehler beim Rendern von Nachkommen, in deren Lifecycle und in synchronen Handlern ab. Einige asynchrone Fehler (nicht abgefangene Promise-Ablehnungen) werden besser auf globaler Ebene behandelt – das wird später behandelt.
Kurze Überprüfung
Was bewirkt die Rückgabe von false aus onErrorCaptured?
Zusammenfassung
Sie haben gelernt, dass onErrorCaptured((err, instance, info)) Fehler aus Nachkommen-Komponenten abfängt. Der info-String liefert Lifecycle-Kontext, und die Rückgabe von false stoppt die Weitergabe, sodass die Komponente den Fehler lokal behandeln kann.
Häufig gestellte Fragen
Ist die Lektion „Lifecycle-Hook onErrorCaptured“ kostenlos?
Ja — der vollständige Text von „Lifecycle-Hook onErrorCaptured“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Vue Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Vue Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Lifecycle-Hook onErrorCaptured“?
Fehler von Kindkomponenten abfangen, mit false die Weitergabe stoppen und Fehlerobjekte verarbeiten Du übst Vue 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 Vue Academy zu starten?
Keine Vorkenntnisse erforderlich. Vue 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 1 von 4.
Wie lange dauert die Lektion „Lifecycle-Hook onErrorCaptured“?
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 Vue Academy-Lektion Code schreiben und ausführen?
Ja. Jede Vue 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
- Lifecycle-Hook onErrorCaptured
- Komponenten als Error Boundaries
- app.config.errorHandler für globale Fehler
- Asynchrone Fehlerbehandlung in Composables