0Pricing
Zig Academy · Lektion

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

  1. Was defer garantiert
  2. Ausführungsreihenfolge mehrerer defers
  3. defer vs errdefer in der Praxis
  4. Open und Close paaren
← Zurück zu Zig Academy