Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi OnTerminate wird nicht ausgeführt (https://www.delphipraxis.net/138696-onterminate-wird-nicht-ausgefuehrt.html)

Muetze1 15. Aug 2009 17:26

Re: OnTerminate wird nicht ausgeführt
 
... und entferne unbedingt die Verwendung von ExceptObject in deinem Exception Handler der Execute Methode. Du hast keine Ahnung in Multi-threaded Applications welches Exceptionobjekt du da gerade in der ein einzigen globalen Variable hast. Es gibt nicht umsonst das On E: Exception do Konstrukt.

Auch ist EAbort eine stille Exception und schlägt so nicht im Exceptionhandler´auf - was ja die Besonderheit von stillen Exceptions ist.

Apollonius 15. Aug 2009 21:11

Re: OnTerminate wird nicht ausgeführt
 
ExceptObject verwendet zumindest in Delphi 2006 die threadspezifische Variable RaiseListPtr - ich meine allerdings auch, dass die on-Klausel hier geeigneter ist.
Was meinst du mit "stille Exceptions schlagen nicht im Exceptionhandler auf"? In TApplication.HandleMessage muss auch explizit auf EAbort geprüft werden.

Muetze1 15. Aug 2009 22:51

Re: OnTerminate wird nicht ausgeführt
 
Zitat:

Zitat von Apollonius
In TApplication.HandleMessage muss auch explizit auf EAbort geprüft werden.

Aber auch nur da, da genau dort die Entscheidung gefällt wird (im Default Handler), dass die von EAbort abgeleiteten Exceptions stille Exceptions sind.

Apollonius 16. Aug 2009 17:43

Re: OnTerminate wird nicht ausgeführt
 
Ich verstehe deinen Punkt nicht. Da er die Exception aus dem Thread an ShowException und nicht an HandleException weiterreicht, muss er doch selbst auf EAbort prüfen, oder?

Muetze1 16. Aug 2009 22:27

Re: OnTerminate wird nicht ausgeführt
 
Zitat:

Zitat von Apollonius
Ich verstehe deinen Punkt nicht. Da er die Exception aus dem Thread an ShowException und nicht an HandleException weiterreicht, muss er doch selbst auf EAbort prüfen, oder?

Ich habe es eben unter RAD2007 ausprobiert und musste feststellen, dass sich das Verhalten vllt. gegenüber geändert hat. Ich war der Meinung das alle stillen Exceptions (also Ableitungen von EAbort) nicht in den Exception Handlern aufschlagen. Dies hat sich unter RAD2007 nicht bestätigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 Uhr.
Seite 2 von 2     12   

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