Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Exception feststellen in finally


Mandi Nice - Di 04.01.11 22:52
Titel: Exception feststellen in finally
Hallöchen

Hab' jetzt länger nix mehr gemacht in Delphi. Bin daher etwas eingerotet ;-(

Wie kann ich bei try finally feststellen ob eine Exception aufgetretten ist oder ob finally "normal" aufgerufen wurde.

Danke.

hmg
Mandi


Bergmann89 - Di 04.01.11 23:15

Hey,

so einfach geht das nicht, am bessten "verbaust" du 2 try-Blöcke. Dann hast du sozusagen einen Try-Except-Finally-Block:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try try

except

end;
finally

end;


MfG Bergmann.


elundril - Di 04.01.11 23:53

wann zieht Delphi da eigentlich nach und macht ein:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
try
{...}
finally
{...}
except
{...}
end;


lg elundril


jaenicke - Mi 05.01.11 00:35

Ich glaube nicht, dass das kommen wird. Denn ein try..finally dient in der Regel als Resourcenschutzblock, während try..except dem gezielten Abfangen einer Exception in einem Teil des Quelltextes dient.

Eine Kombination ist deshalb gar nicht so sinnvoll. Klar gibt es auch Fälle, in denen es tatsächlich sinnvoll ist, den ganzen try..finally Bereich mit try..except abzudecken. Aber meistens ist es IMHO sinnvoller das try..except feiner abzustimmen (z.B. auf eine bestimmte Zeile zu begrenzen) um eine genauere Fehlerbehandlung zu erlauben.