IT-Lexikon › Programmierung › defer

defer

Programmierung Svenska → Aktualisiert: 2026-09-08

Sprachfeature: Ausführung eines Ausdrucks aufschieben, bis die umschließende Funktion zurückkehrt. Garantiert Aufräumarbeiten unabhängig von frühen Returns oder Panics. Go-Original (2009), auch in Zig und Swift. Ersatz für try-finally bzw. RAII.

Klassisches Go: defer file.Close() direkt nach file, _ := os.Open(...) — das Schließen passiert garantiert, selbst bei einem Error-Return mitten in der Funktion. Mehrere defer-Aufrufe laufen in LIFO-Reihenfolge (Stack-basiert). Häufige Falle: defer file.Close() in einer Schleife — die Close-Aufrufe stapeln sich bis zum Funktionsende, Datei-Handles laufen leer. Abhilfe schafft eine innere Funktion. Swift kennt defer { cleanup() } ganz ähnlich. Zig hat defer und zusätzlich errdefer, das nur bei einem Error-Return läuft. Ein modernes Ressourcenmanagement-Muster, am ehesten zu lesen als "Java-try-finally mit syntaktischem Zucker".

← Zurück zum Lexikon