![]() |
AW: finally: if "exception exists" then ... else ... Ist das möglich?
jain ... dafür ist eigentlich der Except-Block zuständig,
aber (nicht schön, aber gehn)
Delphi-Quellcode:
ansonsten
EinFehler := True;
try ... EinFehler := False; finally if EinFehler then ... end;
Delphi-Quellcode:
try
... except ... raise; // erneut auslösen end;
Delphi-Quellcode:
try
... except on E: Exception do begin ... E.Message := 'Fehler: ' + E.Message; // eventuell die Meldung erweitern ... raise; // erneut auslösen end; end;
Delphi-Quellcode:
try
... except on E: Exception do begin ... raise Exception.Create(...); // andere Exception auslösen end; end; und dann noch verschachtelt
Delphi-Quellcode:
try
X := TIrgendwas.Create; try ... finally X.Free; // erst aufräumen, dann Exception behandeln end; except ... end;
Delphi-Quellcode:
X := TIrgendwas.Create;
try try ... except ... end; finally X.Free; // erst Exception behandeln, dann aufräumen end;
Delphi-Quellcode:
X := nil;
try X := TIrgendwas.Create; // Fehler beim Erstellen ebenfalls mit behandeln try ... except ... end; finally X.Free; // erst Exception behandeln, dann aufräumen end; |
AW: finally: if "exception exists" then ... else ... Ist das möglich?
Zitat:
Das war doch schon letztens der Fall, dass du etwas gepostet hast was durch einfaches probieren zu widerlegen war. Wenn innerhalb eines try-finally eine Exception ausgelöst wird, wird der Code hinter dem Block nicht mehr ausgeführt. Bei einem Fehler innerhalb eines try-Except wird jedoch der Code hinter dem Block noch ausgeführt. Wenn du jetzt innerhalb des Try-Finally ein Try-Except machst wird der Fehler im Except-Block behandelt und es geht auch nach dem Finally weiter. Wenn dann müsste man im Except-Block die Exception erneut auslösen damit der Code hinter dem Finally-Block nicht mehr ausgeführt wird. |
AW: finally: if "exception exists" then ... else ... Ist das möglich?
Innerhalb des ersten TRY/Create und des letzten END funktioniert es genau so, wie beschrieben,
also ja .... ich hab's mehrfach erfolgreich in Verwendung. Fremdcode darf aber nur an den gepunkteten Stellen vorhanden sein, sonst mirgendwo. Code vor dem ersten TRY/Create und nach dem letzten END ist hierbei irrelevant. Ob nun Code nach dem letzen END ausgeführt wird, hängt von der Exceptionbehandlung ab. * wird der Fehler abgefangen, dann wird nachfolgender Code natürlich ausgeführt (genauso, wie bei einem unverschachtelten Try-Except) * wird die Exception nach der Fehlerbehandlung erneut ausgelöst (raise), dann wird nachfolgender Code nicht mehr ausgeführt (es sei denn er steht auch in einem Finally-Block) |
AW: finally: if "exception exists" then ... else ... Ist das möglich?
Frage war für mich erledigt, dachte das "Offene Frage" auch weggeklickt zu haben. Nun ist wohl ein neuer Post die einzige Lösung, um das Flag entfernen zu können...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:47 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz