![]() |
Keine Exceptions
Hallo,
wie kann es eigentlich sein, dass in einem Projekt keine Exceptions mehr angezeigt werden? Im Debugger sehe ich die Exceptions noch, aber im Programm selbst nicht. Gibt es da irgenwo eine globale Einstellung für so was? Delphi 10.2 in dem Fall |
AW: Keine Exceptions
Siehst Du keine Exception-Meldungen zur Laufzeit, d. h. Exe gestartet ohne Debugger oder außerhalb der IDE? Da fällt mir nur eine Möglichkeit ein: TApplication (und TApplicationEvents) haben einen Event
![]() |
AW: Keine Exceptions
Zitat:
Ich vermute, es hängt mit dem MadExcept zusammen. Habe gerade noch etwas ausprobiert. Hintergrundinfo: Ich zwei Projekte, die sich das selbe Mainform und auch die meisten Units teilen und nur über ifdefs unterschiedlich kompiliert werden. Die Projekte wurde gerade auf einen neuen Rechner mit neu installiertem Delphi portiert. Auf dem alten Rechner war in den Projekten das MadExcept aktiviert. Auf dem neuen Rechner war zunächst noch kein MadExcept installiert. Das habe ich gerade nachgeholt. Jetzt habe ich folgende Situation, was die Anzeige von Meldungen im Exception-Fall angeht (Ich hoffe, das ist einigermaßen verständlich)
Code:
Alter Rechner
MadExcept aktiviert Projekt A: MadExept-Meldungen Projekt B: MadExept-Meldungen MadExcept deaktiviert Projekt A: nichts Projekt B: nichts Neuer Rechner MadExcept aktiviert Projekt A: MadExept-Meldungen Projekt B: nichts MadExcept deaktiviert Projekt A: nichts Projekt B: nichts Was micht wundert ist, dass auch auch schon auf dem alten Rechner bei deaktiviertem MadExcept keine normalen Exceptions kommen. Das war mir vorher nicht aufgefallen. Und auf dem neuen Rechner kommt bei Projekt B überhapt nichts, auch nicht mit aktivem MadExcept. Kann sich da jemand einen Reim drauf machen? |
AW: Keine Exceptions
Mit MadExcept habe ich selbst nie gearbeitet. Aber Du bist Dir sicher, daß die fraglichen Exceptions nicht in deinem eigenen Kode in einem try except-Block abgefangen und verschluckt werden und MadExcept sie nur wie der IDE Debugger auf einer tieferen Ebene detektiert und anzeigt bzw. ins Log schreibt?
Kannst Du das Problem in einem Testprojekt nachstellen? Versuch auch mal, das DPROJ-File umzubenennen und das Projekt über das DPR-File zu öffnen. Ein neu erzeugtes DPROJ-File hat halt sicher keine historischen Artefakte drin... |
AW: Keine Exceptions
Hallo,
MadExcept kümmert sich eigentlich nur um Exceptions um die sich der Entwickler noch nicht selber gekümmert hat. |
AW: Keine Exceptions
Kannst du das denn nicht debuggen? Je nachdem, wo die Exception ausgelöst wird, gibt es natürlich unterschiedliche Stellen, an denen diese behandelt wird. Das kannst du aber im funktionierenden Projekt prüfen.
Beispiel: Wenn die Exception in einem Buttonklick ausgelöst wird, landest du im except in TWinControl.MainWndProc, wo dann Application.HandleException aufgerufen wird (das dann die Messagebox anzeigt). |
AW: Keine Exceptions
Jetzt habe ich es gefunden: Es gab doch ein Application.OnException. Das hatte ich anscheinend verdrängt/vergessen. Den Code dafür hatte ich aus einem Forum des Datenbankherstellers (ElevateDB).
Delphi-Quellcode:
Es sollte eigentlich so sein, dass hier nur das EDB_Error_SessionNotFound behandelt wird und alle anderen Exceptions unangetastet bleiben. Die werden aber auch verschluckt, was ich jetzt weiß.
if Assigned(E) then begin
if (E is EDatabaseError) and (E is EEDBError) then begin if EEDBError(E).ErrorCode=EDB_Error_SessionNotFound then begin // Exception in Logdatei Protokollieren end; end; end; Ich habe jetzt mal ein Application.ShowException(E) eingebaut. Dann funktioniert es wie gewohnt. |
AW: Keine Exceptions
AND?
Und im
Delphi-Quellcode:
ist E immer assigned.
on E: irgendwas do
Delphi-Quellcode:
except
on E: EEDBError do if E.ErrorCode = EDB_Error_SessionNotFound then ... else ...; on E: Exception do ...; end; |
AW: Keine Exceptions
Es ist zwar nicht in einem except-Block, sondern im
Delphi-Quellcode:
, aber selbst da ist die übergebene Exception immer eine gültige Instanz.
Application.OnException
|
AW: Keine Exceptions
Zitat:
Edit: ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 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-2025 by Thomas Breitkreuz