Mehrere Objekte erstellen und wegräumen
Als Delphi-Programmierer müssen wir leider immer noch ohne Garbage Collection auskommen und somit unsere Objekte selber wieder wegräumen. Häufig verwenden wir dazu folgendes Muster:
foo := TFoo.Create;
try
// foo verwenden
finally
foo.Free;
end;
So weit so gut. Was machen wir nun aber, wenn wir mehr als ein Objekt verwenden müssen? Olaf Monien hat dazu einen hervorragenden Artikel geschrieben und empfiehlt folgendes Muster:
foo := nil;
bar := nil;
try
foo := TFoo.Create;
bar := TBar.Create;
// foo und bar verwenden
finally
bar.Free;
foo.Free;
end;
Mir gefällt dieses Muster sehr gut, weil es einerseits übersichtlich und andererseits vor allem aber auch technisch korrekt ist. Dieses Muster funktioniert zum Beispiel auch dann, wenn im Konstruktor von TFoo oder TBar eine Exception geworfen wird.
Erläuterungen zu diesem Muster und auch einige Beispiele, wie man es eben nicht machen soll, finden sich in Olaf’s Artikel Creating mulitple objects using try-finally.