Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi ApplicationOnException und try..except Verständnisfrage (https://www.delphipraxis.net/126562-applicationonexception-und-try-except-verstaendnisfrage.html)

haentschman 28. Dez 2008 13:06


ApplicationOnException und try..except Verständnisfrage
 
Hallo alle miteinander...

nach dem vielen Lesen verschiedenster Varianten bin ich ein wenig verwirrt... :?

In meinem Programm habe ich Wert darauf gelegt, daß Exceptions gar nicht erst auftreten (Überprüfung der Eingaben etc.)
Trotzdem passieren ja manchmal Dinge, welche man nicht beeinflussen kann.

Zum einen hätte ich gern einen "globalen" Exception Handler der alle unmöglichen Exceptions auswertet (Dateizugriff wegen kaputter Festplatte nicht möglich etc.)
- Application.OnException:= AppException...oder so :roll:

Zum anderen habe ich um einige z.B. Datenbankaktionen try / except Blöcke und werte die Exceptions speziell aus.

Die Frage:

- wenn ich die "globale" Exception in einer eigenen Procedure auswerte, wird das except der Blöcke überhaupt noch ausgeführt ?
- und wenn ja vor oder nach der "globalen " procedure ?

Danke für Infos... :hi:

thkerkmann 28. Dez 2008 13:09

Re: ApplicationOnException und try..except Verständnisfrage
 
Hi,

die lokalen try .. except Blöcke haben immer Vorrang.
Die globale Behandlungsroutine erhält nun nur noch die Exceptions, die du nicht speziell abgefangen hast.

Du kannst wohl noch innerhalb deiner lokalen Behandlung die Exception nochmal erzeugen mit Raise.

Dann erhält die globale Routine wieder die Information.

Gruss

mkinzler 28. Dez 2008 13:10

Re: ApplicationOnException und try..except Verständnisfrage
 
Geschachtelte Exceptions sind erst ab D2009 möglich

DeddyH 28. Dez 2008 13:11

Re: ApplicationOnException und try..except Verständnisfrage
 
Zum besseren Verständnis zitiere ich mal die Delphi 7-Hilfe:
Zitat:

Beschreibung

Mit OnException ändern Sie das Standardverhalten für vom Anwendungscode nicht behandelte Exceptions. Die Ereignisbehandlungsroutine OnException wird automatisch von der Methode HandleException aufgerufen.

OnException behandelt nur Exceptions, die während der Botschaftsverarbeitung auftreten. Exceptions, die vor oder nach der Ausführung der Methode Run der Anwendung auftreten, erzeugen keine OnException-Ereignisse.

Wenn eine Exception die try-Blöcke des Anwendungsquelltexts durchläuft, ruft die Awendung automatisch die Methode HandleException auf. Außer wenn die Exception ein EAbort-Objekt ist, ruft HandleException die Behandlungsroutine OnException auf (sofern vorhanden). Ansonsten wird die Methode ShowException aufgerufen, die ein Fenster mit einer Fehlermeldung anzeigt.

TExceptionEvent ist der Typ des Ereignisses OnException. Er zeigt auf eine Methode, die Exceptions in der Anwendung behandelt. Sender gibt das Objekt an, in dem die Exception aufgetreten ist. Der Parameter E enthält das Exception-Objekt.

Hinweis: Sie können zur Reaktion auf dieses Ereignis auch die Komponente TApplicationEvents verwenden, die es Ihnen ermöglicht, über die IDE eine Ereignisbehandlungsroutine zuzuweisen.

haentschman 28. Dez 2008 13:15

Re: ApplicationOnException und try..except Verständnisfrage
 
Danke für die schnelle Antwort... :thumb:

genau wie ich es brauche... :wink:

:gruebel: Dümmlich ist nur, daß ich mir keine Fehler reinprogrammieren will um das ganze zu testen.
:gruebel: Wie testet ihr Fehler, welche "nicht vorhanden" sind ?

Danke

mkinzler 28. Dez 2008 13:17

Re: ApplicationOnException und try..except Verständnisfrage
 
Delphi-Quellcode:
raise ...

haentschman 28. Dez 2008 13:18

Re: ApplicationOnException und try..except Verständnisfrage
 
...das ist zu einfach :oops:

Danke...

Noch ein kleines Tutorial dazu gefunden...
http://www-1.tu-cottbus.de/pst/exceptut.pdf


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:36 Uhr.

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