![]() |
Try Except - Originale Delphi Fehlermeldung?
Hallo,
wie kann ich bei einer Try-Except Anweisung den Text der originalen Delphi Fehlermeldung abfangen?
Delphi-Quellcode:
Die Fehlermeldung möchte ich um den originalen Fehlertext von Delphi erweitern, da ich nur dann weiß, was eigentlich passiert ist. Denn wenn ich den Code einfach ohne TRY laufen würde, würde Delphi ja eine schöne detaillierte Information ausgeben.
TRY
{ irgendwelcher fehlerverursachender Code } EXCEPT showmessage('Huch, ein Fehler'); END; |
Re: Try Except - Originale Delphi Fehlermeldung?
Delphi-Quellcode:
try
except on E: Exception do ShowMessage(E.Message); end; |
Re: Try Except - Originale Delphi Fehlermeldung?
Vielen Dank, hat geholfen :)
|
Re: Try Except - Originale Delphi Fehlermeldung?
ansonsten sind in der System-Unit noch einige Variablen definiert :angel:
z.B. das ExceptObject
Delphi-Quellcode:
try
except ShowMessage(Exception(ExceptObject).Message); end; |
Re: Try Except - Originale Delphi Fehlermeldung?
Ah, das kannte ich gar nicht. *unter Gehirn\Delphi abspeichert* :mrgreen:
Funktioniert das eigentlich auch in finally, wenn da eine Exception aufgetreten ist? :-D |
Re: Try Except - Originale Delphi Fehlermeldung?
1. Das ExceptObject ist global und sollte nicht verwendet werden, da es bis zur Anzeige/Ausführung eures Codes unter des ExceptObject'es schon wieder eine neue Exception - u.a. in einem parallelen Thread - zu einer weiteren Exception gekommen sein kann und dann enthält ExceptObject dieses. Die globale Variable kann man nicht sicher einsetzen.
2. Das On E:Exception do gibt euch die zu dem Handler passende Exception und legt diese in E ab. Hier könnt ihr euch sicher sein, dass ihr die richtige verwendet. 3. Falls nun einer kommt: ich nutze keine Threads: Die VCL hat für ihre Nachrichtenschleife schon einen Thread (in dessen Context soweit zwar alle GUI Events laufen, aber das ist nur einer von vielen) und genauso gut gibt es an vielen anderen Stelle noch weitere. U.a. seien auch nochmal die Sockets erwähnt die davon nicht gerade wenige haben. 4. Finally Ausführung bedeutet nicht, dass es auch eine Exception gegeben hat! Und das man dies auch nicht anhand des ExceptObject'es nachprüfen kann, kann man sich aufgrund der Hinweise aus 1. denken. Vergesst ExceptObject lieber schnell wieder! Es ist nur mit Vorsicht und unter bestimmten Bedingungen nutzbar. Auch die RTL nutzt diese Variable zum mappen von Exception, u.a. von Windows bzw. der WinAPI. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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