Autor Beitrag
TheEquinox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Mo 01.08.11 18:08 
Hallo zusammen,

in meinem Delphi5 Code werfe ich verschiedene Exceptions (eigene Exception-Typen), die ich dann in einem gemeinsamen Handler über Application.OnException behandeln will. Die Behandlung soll so aussehen, dass bei verschiedenen Exception-Typen die Exception-Messages in verschiedenen Memo Steuerelementen ausgegeben werden sollen, eben je nach Exception-Typ.

Grundsätzlich funktioniert das auch, das Problem ist aber, dass mir Delphi zusätzlich immer noch eine Exception-Messagebox auf macht, in der nochmal der Fehlertext steht. Im Debugger ist das ja noch klar, aber wenn ich die EXE normal über Doppelklick starte möchte ich diese Messageboxen nicht haben.

Deshalb die Frage : Wie kann ich die Anzeige dieser Exception-Messageboxen unterbinden ?

Danke...


Edit : Es scheint doch anders zu sein. Wenn es um eine vom System geworfene Exception geht, macht er es ganz normal ohne MessageBox. Das Problem tritt allerdings bei Exceptions auf, die ich selber mit raise werfe. Bei diesen Exceptions springt er gar nicht in Application.OnException rein. Kann man ihm das irgendwie beibringen ?


Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mo 01.08.2011 um 19:04
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.08.11 19:31 
Das liegt dann wohl an deiner sehr alten Delphiversion. Bei Delphi XE z.B. werden auch eigene Exceptions abgefangen, getestet mit einem Button, der einfach eine Exception wirft.

Pack dir einfach einmal einen Button auf ein Formular und löse eine Exception aus. Dann kannst du debuggen was danach in Delphi passiert. Bei XE landest du am Ende bei Application.HandleException, wo dann OnException ausgelöst wird.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Mo 01.08.11 22:59 
Das gleiche ist auch bei Delphi 4 und aufwärts bereits der Fall. Hatte ich bisher noch nie Probleme; wobei ich dieses Vorgehen nicht unbedingt als sauber erachte. Aber das ist ein anderes Thema.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 01.08.11 23:21 
Dass das mit sauberem Code bzw. einer sauberen Programmstruktur nicht viel zu tun hat, ist klar, aber darum geht es in diesem Fall ja offenbar nicht. ;-)

Jedenfalls hätte es mich auch gewundert, wenn es in älteren Versionen anders gewesen wäre. Deshalb ja auch der Vorschlag im Debugger zu schauen was dort passiert. :D

@user profile iconTheEquinox:
Kann es sein, dass du aus Versehen Application.OnException direkt benutzt statt wie vorgesehen TApplicationEvents zu benutzen? Dann liegt das wahrscheinlich daran. Denn soweit ich mich erinnere wird Handled nur dort auf True gesetzt.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 02.08.11 03:17 
Oder anders ausgedrückt: Zeig mal etwas Code, wie Du das Event abfängst und behandelst, sowie das Auslösen deiner Test-Exceptions.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.