defer vs errdefer in der Praxis
Wählen Sie zwischen immer und nur bei Fehlern ausgeführtem Code.
defer vs errdefer in der Praxis ist eine kostenlose Zig Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
Teile dieser Lektion wurden noch nicht übersetzt und werden auf Englisch angezeigt.
Two Cleanup Keywords
Zig gives you two scheduling tools: defer always runs, while errdefer runs only when the scope exits with an error.
defer Means Always
Use defer when cleanup must happen no matter what, like closing a file you opened for the whole function.
const f = try open();
defer f.close();errdefer Means On Failure
An errdefer only fires if the scope leaves through an error. On a successful return, it is quietly skipped.
const buf = try alloc();
errdefer free(buf);Why Skip on Success
Sometimes you build a value to return it. On success the caller owns it, so you must not free it; errdefer respects that.
Half-Built Objects
errdefer shines in constructors. If a later step fails, it undoes the earlier allocations so you never leak a half-built object.
const a = try alloc();
errdefer free(a);
const b = try alloc();Success Hands Off Ownership
When every step succeeds, the function returns the value and the errdefers do not run. Ownership transfers cleanly to the caller.
return MyType{ .a = a, .b = b };They Combine Nicely
You can mix both. A defer handles temporary scratch memory, while an errdefer protects the result you plan to return.
Both Honor Reverse Order
Like defer, multiple errdefers unwind in reverse. On error, Zig runs the matching defers and errdefers together, newest first.
Placement Matters
Put each errdefer right after the step it protects. It only guards failures that happen after its own line is reached.
A Simple Rule
Ask one question: should this cleanup run on success too? Yes means defer; only-on-error means errdefer.
Leak-Free by Construction
Together these keywords let you write functions that are leak-free on every path, success or failure, without manual bookkeeping.
Quick Check
When does errdefer run compared to defer?
Recap
Reach for defer when cleanup must always run, and errdefer when it should only undo work on the error path. ✅
Häufig gestellte Fragen
Ist die Lektion „defer vs errdefer in der Praxis“ kostenlos?
Ja — der vollständige Text von „defer vs errdefer in der Praxis“ 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 „defer vs errdefer in der Praxis“?
Wählen Sie zwischen immer und nur bei Fehlern ausgeführtem Code. 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 3 von 4.
Wie lange dauert die Lektion „defer vs errdefer in der Praxis“?
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
- Was defer garantiert
- Ausführungsreihenfolge mehrerer defers
- defer vs errdefer in der Praxis
- Open und Close paaren