Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi NICHT bei Exceptions im try..except Block anhalten. (https://www.delphipraxis.net/73665-nicht-bei-exceptions-im-try-except-block-anhalten.html)

BeerBear 21. Jul 2006 12:01


NICHT bei Exceptions im try..except Block anhalten.
 
Moin!

Wie allgemein bekannt, bietet Delphi ja die Option "Bei Exceptions anhalten".
Allerdings tut Delphi dies auch unerwünschterweise innerhalb von try..except Blöcken.
Gibt es eine Möglichkeit dies zu verhindern?

Danke schonmal!

[Edit: Es handelt sich bei mir um Delphi 3]

andreash 21. Jul 2006 12:33

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Hallo,

wieso möchtest du das verhindern? :gruebel: Du benutzt doch nicht etwa Exceptions für die Programmkontrolle? :wink: Exceptions sollten nur in Ausnahmefällen auftreten, also am besten gar nicht. Wenn die Exceptions nerven, ist das ein Hinweis darauf, den Programmcode zu überarbeiten und die Exceptions mit Abfragen zu umgehen.

PS: In Delphi 7 lassen sich Breakpoints so einrichten, dass von bestimmten Programmzeilen aus Delphi nicht mehr bei Exceptions stoppt.

arbu man 21. Jul 2006 12:36

Re: NICHT bei Exceptions im try..except Block anhalten.
 
naja es geht so:
Delphi-Quellcode:
try
  hier dann der fehlerhafte code
except
  on e:Exception do begin
    // hier sollte man die exception ausweten
  end;
end
Gut ist das aber nicht!

DGL-luke 21. Jul 2006 12:50

Re: NICHT bei Exceptions im try..except Block anhalten.
 
@arbu man: Der Debugger schreit aber trotzdem.

3_of_8 21. Jul 2006 12:50

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Nein, sein Problem ist folgendes: Delphi gibt eine Warnmeldung aus, wenn eine Exception ausgelöst wird.

Auch, wenn man sie mit try-except fängt.

Allerdings ist das nur im Debugger so, wenn das ganze ohne Debug-Hook läuft geht es.

Also, entweder die EXE direkt starten oder irgendwo nach ner Option zum Ausschalten des Debuggers suchen, wenn es die irgendwo geben sollte.

himitsu 21. Jul 2006 12:55

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Zitat:

Zitat von 3_of_8
oder irgendwo nach ner Option zum Ausschalten des Debuggers suchen, wenn es die irgendwo geben sollte.

Projektoptionen? :zwinker:

BeerBear 21. Jul 2006 13:25

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Also nochmal:

Ich möchte schon, dass der Debugger bei Exceptions ganz normal anhält und mir auch zeigt, welche Zeile diese auslöst.
Aber eben nicht, wenn diese Exception bereits in einem try..except Block gefangen wird.
Bei dem zu debuggenden Programm handelt es sich um mehr als 600.000 Zeilen. Da kommen schon einige Exceptions innerhalb try..except Blöcken zu stande. Ich möchte mich aber beim Debuggen auf die Exceptions konzentrieren, die noch nicht abgefangen werden.

Klaus01 21. Jul 2006 13:37

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Hallo,

schau Dir mal bitte den Thread an, besonders Beitrag 3

http://www.delphipraxis.net/internal...exceptions+ide

Ich weiß allerdings nicht ob es diese Option schon bei Delphi 3 gibt.

Grüße
Klaus

Khabarakh 21. Jul 2006 13:45

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Zitat:

Zitat von Klaus01
Hallo,

schau Dir mal bitte den Thread an, besonders Beitrag 3

Hab ich. Aber was bitte hat das mit dem Thema zu tun?

@BeerBear: Wechsel zu .Net :duck: . Mit dem Delphi-Debugger hast du AFAIK keine Chance.

Peinhard 21. Jul 2006 13:46

Re: NICHT bei Exceptions im try..except Block anhalten.
 
Es gibt (ab D5?) auch die Möglichkeit, bestimmte Exceptions vom Debugger ignorieren zu lassen (Debugger-Optionen). Das hilft bei der eigentlichen Fragestellung hier aber auch nicht weiter. Da würde3 ich evt mal den Weg probieren, 'Bei Exceptions anhalten' ganz auszuschalten und einen Handler auf Application-Ebene (Application.OnException) zu schreiben, wo die nicht behandelten Exceptions dann zB mit ShowMessage oä an die Oberfläche gebracht werden oder auch einfach nur 'Pseudocode' mit einem Breakpoint (und evt mit einem $IFDEF DEBUG-Konstrukt). Dann muß man allerdings auch den Aufrufstack zu Hilfe nehmen, um zu sehen 'wo das herkommt'. Das ist uU auch nicht immer ganz genau bzw 'zielführend', evt muß man dann die entsprechende Aktion auch noch mal mit eingeschaltenem Anhalten wiederholen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz