0Pricing
Zig Academy · Lektion

Fehler wrappen und erneut auslösen

Fügen Sie Kontext hinzu, während Fehler nach oben weitergereicht werden.

Fehler wrappen und erneut auslösen ist eine kostenlose Zig 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 Zig Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Fehler werden nach oben weitergegeben

Wenn eine Funktion einen Fehler nicht selbst behandeln kann, gibt sie ihn an ihren Aufrufer weiter. Dabei können Sie ihn anpassen oder erneut auslösen.

Mit try erneut auslösen

Die einfachste Form des erneuten Auslösens ist try. Es leitet den ursprünglichen Fehler unverändert an Ihren Aufrufer weiter, sodass derselbe Wert nach oben weitergereicht wird.

const data = try readFile(path);

Abfangen und zurückgeben

Um einen Fehler zu übersetzen, fangen Sie ihn mit catch ab und geben einen anderen zurück. Dadurch ersetzen Sie einen Fehler auf niedriger Ebene durch einen Fehler, der zu Ihrer eigenen API passt.

const f = open(path) catch return error.ConfigMissing;

Fehler mit switch abbilden

Kombinieren Sie catch mit einem switch, um jeden zugrunde liegenden Fehler auf einen verständlicheren Fehler abzubilden und die übrigen unverändert weiterzugeben.

parse(s) catch |e| switch (e) {
    error.Empty => return error.NoInput,
    else => return e,
};

Zig besitzt keine Stacktraces als Werte

Ein Fehler in Zig ist nur ein Tag und kein Objekt, das Kontext enthält. Um Details hinzuzufügen, lösen Sie einen eigenen, aussagekräftigeren Fehler erneut aus.

Kontext separat hinzufügen

Da der Fehler-Tag keine Nachricht enthält, protokollieren Sie die Details dort, wo der Fehler auftritt, und geben Sie anschließend den übergeordneten Fehler an den Aufrufer zurück.

open(path) catch |e| {
    std.log.err("open {s}: {}", .{ path, e });
    return error.LoadFailed;
};

Die Fehlermenge erweitern

Wenn Sie einen neuen Fehler zurückgeben, muss die Fehlermenge Ihrer Funktion ihn enthalten. Eine inferierte !T-Menge wächst, um alles abzudecken, was Sie zurückgeben.

fn load() !Config {
    return open(".cfg") catch error.LoadFailed;
}

Beibehalten oder ersetzen

Entscheiden Sie auf jeder Ebene: Leiten Sie den exakten Fehler mit try weiter oder ersetzen Sie ihn durch einen, der für Ihren Aufrufer sinnvoller ist. Beides ist zulässig.

Grenzen sauber halten

Bildet ein Modul eine Grenze, ordnen Sie interne Fehler einer kleinen öffentlichen Menge zu. Aufrufer hängen dann von stabilen Namen und nicht von Ihren Interna ab.

Mit errdefer kombinieren

Wenn Sie einen Fehler erneut auslösen, werden alle errdefer-Anweisungen im Gültigkeitsbereich zuerst ausgeführt. So können Sie Ressourcen zurückrollen und den Fehler in einem Ablauf übersetzen.

Aussagekräftige Fehler

Das Umhüllen von Fehlern verwandelt eine rohe Ursache in eine Meldung, die zu Ihrer Domäne passt. Der Aufrufer sieht einen klaren Fehler statt eines internen Details.

Schnelltest

Sie möchten den Fehler error.NotFound auf niedriger Ebene durch Ihren eigenen Fehler error.ConfigMissing für den Aufrufer ersetzen. Welche Möglichkeit funktioniert?

Zusammenfassung

Sie haben Fehler mit try erneut ausgelöst, sie mit catch und switch abgebildet, Kontext protokolliert und Fehlermengen erweitert, damit Fehler aussagekräftig bleiben. ✅

Häufig gestellte Fragen

Ist die Lektion „Fehler wrappen und erneut auslösen“ kostenlos?

Ja — der vollständige Text von „Fehler wrappen und erneut auslösen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Zig Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Zig Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Fehler wrappen und erneut auslösen“?

Fügen Sie Kontext hinzu, während Fehler nach oben weitergereicht werden. Du übst Zig 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 Zig Academy zu starten?

Keine Vorkenntnisse erforderlich. Zig 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 „Fehler wrappen und erneut auslösen“?

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 Zig Academy-Lektion Code schreiben und ausführen?

Ja. Jede Zig 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

  1. Mit catch Fehler behandeln
  2. Auf bestimmte Fehler mit switch reagieren
  3. errdefer für Bereinigung bei Fehlern
  4. Fehler wrappen und erneut auslösen
← Zurück zu Zig Academy