Moin Keex,
try/finally und try/except haben eigentlich nicht viel miteinander zu tun.
try/finally ist der sogenannte Resourcenschutzblock, der sicherstellen soll, dass belegte Resourcen garantiert wieder freigegeben werden, da, wie malo ja schon sagte, der finally-Abschnitt immer ausgeführt wird.
Delphi-Quellcode:
// Allgemein:
<Resource belegen>
try
<Mit der Resource arbeiten>
finally
<Resource freigeben>
end;
// z.B. Objekte
sl := TStringList.Create;
try
sl.LoadFromFile(...);
// ...
finally
FreeAndNil(sl);
end;
// aber auch Handle
hFile := CreateFile(....);
try
// Mach was mit der geöffnete Datei
finally
CloseFile(hFile);
end;
Ein Resourcenschutzblock lässt sich auch in "grösserem Stile" finden.
Die Kombination aus Create/Destroy (Beispiel: Wird ein Fenster erzeugt, Resourcen belegen, die erst wieder freigegeben werden wenn das Fenster wieder freigegeben wird), oder auch initialization/finalization (innerhalb einer
Unit).
try/except wird man nur verwenden, wenn man damit rechnen muss, dass in einem bestimmten Abschnitt eine
Exception auftritt, und auf diese selber reagieren will (oder muss
)