![]() |
Exceptions von weit weg abfangen
Folgendes Szenario:
Code:
Die Prozedur "second" stammt aus einer anderen Unit an der ich nichts verändern möchte. Gleichzeitig besteht aber die Gefahr, dass genau dort eine Exception geworfen wird. Die möchte ich aber abfangen, also dachte ich mir, dass die aufrufende Prozedur "first" dies tun könnte. Macht sie aber nicht. Das was ich dort in die except-Klausel schreibe, wird einfach ignoriert. Wie kann ich das lösen?
procedure first;
begin try second; except dosomethingaboutit; end; end; procedure second; begin dosomethingthatmightcauseanexception; end; |
Re: Exceptions von weit weg abfangen
das in deinem Except wird nur ignoriert wenn kein Fehler ausgelöst wird. Woher bist du dir so sicher das der Except-Block nie ausgeführt wird? (haltepunkte etc. gesetzt?)
|
Re: Exceptions von weit weg abfangen
Code:
program Project1;
{$APPTYPE CONSOLE} uses SysUtils, Dialogs; procedure second; begin case Round(Random) of 0: StrToInt('Zwei'); // EConvertError 1: TObject(nil).Destroy; // Allgemeine Schutzverletzung end; end; procedure first; begin try second; except ShowMessage('Es ist ein Fehler aufgetreten.'); end; end; begin Randomize; first; end. Zitat:
Die Unit SysUtils sollte aber eingebunden werden, sonst kann es bei Fehlern statt Exceptions auch RuntimeErrors geben. Die dann das Programm direkt beenden. |
Re: Exceptions von weit weg abfangen
Zitat:
|
Re: Exceptions von weit weg abfangen
Zitat:
|
Re: Exceptions von weit weg abfangen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe keine Zeit um nach dem Grund für diese Exception zu suchen, daher zähle ich nur die fehlerhaften ZIPs mit und ignoriere sie.
Im Anhang eine von zwei bisher festgestellten Exceptions: |
Re: Exceptions von weit weg abfangen
Sieht eher so aus als liegt das Problem an einer Datei, die evtl. kein gültiges Datum für FileAge / DateTimeToStr besitzt.
Ich würde an dieser Stelle evtl. mal einen try except block verwenden. |
Re: Exceptions von weit weg abfangen
Eben genau darum geht es ja. Ich kenne die Zeile, die den Fehler verursacht, aber ich möchte in dieser Unit nichts verändern, weil es nicht meine Unit ist. Sicher kann ich da einen try-Block einfügen, aber dann bräuchte ich diesen Thread nicht erstellen.
|
Re: Exceptions von weit weg abfangen
Zitat:
|
Re: Exceptions von weit weg abfangen
Hast du die Anwendung mal "ausserhalb" von Delphi gestartet? Kommt die Fehlermeldung dann auch?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:29 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 by Thomas Breitkreuz