![]() |
Behandlung von Exception in einer Prozedur
Hallo,
ich möchte in einer aufgerufenen Prozedur eine eigene Fehlerbehandlung realisieren. Falls ein Fehler auftritt, soll auch der Ablauf der aufrufenden Prozedur abgebrochen werden. Zur Veranschaulichung mal etwas Beispielcode:
Delphi-Quellcode:
Prinzipiell ist der Programmablauf richtig. Das habe ich per Einzelschritt überprüft. Allerdings wird die Exception nicht still verarbeitet, sondern per Messagebox gemeldet. Was eigentlich nicht so sein sollte.
procedure TForm1.MachWas1;
begin try Memo1.Lines.Add('MachWas1'); // hier würde irgendwas bearbeitet raise Exception.Create(''); // dabei tritt eine Exception auf except Memo1.Lines.Add('FEHLER in MachWas1'); // Fehlerbehandlung raise; // erneutes Auslösen, für aufrufende Prozedur end end; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Anfang'); try (* try *) Case Auswahl of // Wir nehmen mal Auswahl := 1 an 1: begin MachWas1; // hier tritt der Fehler auf, // eigentlich sollte jetzt abgebrochen und // zum finally-Block gesprungen werden MachWas2; MachWas3; end; 2: begin MachWas1; MachWas3; end; [...] end; (* except end *) finally Memo1.Lines.Add('Ende'); end; end; Entferne ich jetzt die (* *) Kommentare, kommt die Messagebox nicht mehr. Das verstehe ich aber nicht. Eigentlich müßte das try..finally.. die Exception doch schon abfangen. Für Erklärungen und Vorschläge wäre ich sehr dankbar. Gruß, Stephan |
Re: Behandlung von Exception in einer Prozedur
Falsch. Das try-finally macht genau das was es soll: es fuehrt etwas ganz sicher aus, egal ob ein Fehler auftritt oder mit exit rausgesprungen wird. Zum Behandeln von Exceptions muss immer try-except verwendet werden. Deshalb ist die Kapselung von try-finally und try-except durchaus der richtige Weg.
Greetz alcaeus |
Re: Behandlung von Exception in einer Prozedur
Ahh. Na klar. Hatte nen Denkfehler. Ist ja logisch.
Danke dir, Stephan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 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