Der try-finally-Block ist ja auch nicht dazu da um Exceptions zu behandeln.
Falls im try-Block eine auftritt, bleibt sie geworfen und wird weiterhin Ebene für Ebene hochgereicht bis sie behandelt wird.
Delphi-Quellcode:
procedure Prozedur;
begin
try
TueWas;
finally
// Die Exception wird absichtlich nicht abgefangen.
GebeResourcenFrei;
end;
end;
...
try
TueWas;
Prozedur;
TueWas;
except
// Denn sie soll HIER behandelt werden.
on E: EChuckNorrisIsDead
do
begin
...
end;
end;
Wenn man statt dem oberen try-finally ein try-except verwendet, wird die
Exception ja abgefangen.
Und das soll doch überhaupt nicht passieren.