Natürlich kommt er nur in's finally wenn es vor dem try nicht schon gekracht hat.
D.h. wenn in unserem obigen Beispiel das Erzeugen der StringList fehlschlägt (was eigentlich nicht vorkommen sollte), wird der finally-Teil auch nicht ausgeführt.
Zitat von
Matze:
Ach so meinst du das. Stimmt, das hatte ich gar nicht bedacht. Aber in jedem Mustercode wird es ohne doppeltes "try" gelöst. Also kann da eigentlich auch nichts passieren.
Also ich arbeite oft mit verschachtelten try..finally-Blöcken, z.B.:
Delphi-Quellcode:
sl := TStringList.Create;
try
//do something
if sl[0] = 'lad mir ne neue StringList' then
begin
sl2 := TStringList.Create;
try
// do something
finally
FreeAndNil(sl2);
end;
end;
finally
FreeAndNil(sl);
end;