errdefer für Bereinigung bei Fehlern
Machen Sie Arbeit nur rückgängig, wenn etwas fehlschlägt.
errdefer für Bereinigung bei Fehlern 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.
Bereinigung nur bei Fehlern
Manchmal müssen Sie Arbeit rückgängig machen, wenn eine Operation fehlschlägt, bei Erfolg jedoch beibehalten. Genau dafür ist errdefer vorgesehen.
errdefer kennenlernen
Ein errdefer plant Code für das Verlassen des Gültigkeitsbereichs ein, führt ihn aber nur aus, wenn die Funktion ab diesem Punkt einen Fehler zurückgibt.
errdefer allocator.free(buffer);defer immer, errdefer bei Fehlern
Ein defer wird unabhängig davon ausgeführt, wie der Gültigkeitsbereich endet. Ein errdefer läuft nur auf dem Fehlerpfad; bei Erfolg wird es vollständig übersprungen.
Ein teilweise erstelltes Ergebnis freigeben
Reservieren Sie Speicher und verwenden Sie anschließend errdefer zum Freigeben. Schlägt ein späterer Schritt fehl, wird der Puffer freigegeben; bei erfolgreichem Abschluss behalten Sie ihn und geben ihn zurück.
const buf = try allocator.alloc(u8, n);
errdefer allocator.free(buf);
try fill(buf);Die Reihenfolge entspricht der Reservierung
Platzieren Sie jedes errdefer direkt nach der zugehörigen Ressourcenübernahme. Bei einem Fehler werden sie in umgekehrter Reihenfolge ausgeführt und wickeln Ressourcen sicher ab.
const a = try open();
errdefer a.close();
const b = try open();
errdefer b.close();Bei Erfolg bleibt Ihre Arbeit erhalten
Gibt die Funktion einen Wert statt eines Fehlers zurück, wird jedes errdefer übersprungen. Der Aufrufer erhält das vollständig erstellte Ergebnis.
return buf;Der Auslösezeitpunkt ist entscheidend
Ein errdefer schützt nur vor Fehlern, die nach seiner Registrierung auftreten. Fehler davor können es nicht ausführen. Platzieren Sie es daher frühzeitig.
Den Fehler erfassen
Sie können den Fehler in einem errdefer erfassen, um ihn während der Bereinigung zu untersuchen, beispielsweise um zu protokollieren, welcher Fehler den Rollback ausgelöst hat.
errdefer |e| std.debug.print("failed: {}\n", .{e});Konstruktoren ohne Speicherlecks erstellen
Funktionen, die Speicher reservieren und anschließend fehlschlagen können, verwenden errdefer, um speicherleckfrei zu bleiben. Teilweise ausgeführte Arbeit wird bei jedem Fehler automatisch rückgängig gemacht.
Mit try kombinieren
Jedes try kann bei einem Fehler vorzeitig beendet werden. Wenn ein errdefer registriert ist, löst auch dieses vorzeitige Ende Ihre Bereinigung vor dem Abwickeln aus.
const x = try step();
errdefer rollback(x);
_ = try next(x);Das richtige Werkzeug für Rollbacks
Verwenden Sie errdefer, wenn die Bereinigung nur bei einem Fehler erfolgen soll. Damit wird die Ressourcenverwaltung auf dem Fehlerpfad zu einer einzigen klaren Zeile.
Schnelltest
Sie reservieren einen Puffer, und ein späterer Schritt kann fehlschlagen. Der Puffer soll nur bei einem Fehler freigegeben werden. Was verwenden Sie?
Zusammenfassung
Sie haben errdefer verwendet, um teilweise ausgeführte Arbeit auf dem Fehlerpfad rückgängig zu machen, es direkt nach jeder Ressourcenübernahme platziert und erfolgreiche Ergebnisse erhalten. ✅
Lerne Zig mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „errdefer für Bereinigung bei Fehlern“ kostenlos?
Ja — der vollständige Text von „errdefer für Bereinigung bei Fehlern“ 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 „errdefer für Bereinigung bei Fehlern“?
Machen Sie Arbeit nur rückgängig, wenn etwas fehlschlägt. 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 „errdefer für Bereinigung bei Fehlern“?
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
- Mit catch Fehler behandeln
- Auf bestimmte Fehler mit switch reagieren
- errdefer für Bereinigung bei Fehlern
- Fehler wrappen und erneut auslösen