AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Keine Exceptions

Ein Thema von bcvs · begonnen am 11. Apr 2025 · letzter Beitrag vom 14. Apr 2025
Antwort Antwort
Seite 1 von 2  1 2      
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#1

Keine Exceptions

  Alt 11. Apr 2025, 10:57
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
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#2

AW: Keine Exceptions

  Alt 11. Apr 2025, 11:09
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 OnException. Wenn Du dafür einen Handler angelegt hast, der die Exception nicht anzeigt, würde das die Symptome erklären.
Peter Below
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#3

AW: Keine Exceptions

  Alt 11. Apr 2025, 11:50
Siehst Du keine Exception-Meldungen zur Laufzeit, d. h. Exe gestartet ohne Debugger oder außerhalb der IDE?
Genau, so ist es. OnException habe ich nicht.

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?
  Mit Zitat antworten Zitat
peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
715 Beiträge
 
Delphi 12 Athens
 
#4

AW: Keine Exceptions

  Alt 12. Apr 2025, 11:12
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...
Peter Below
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.042 Beiträge
 
Delphi 12 Athens
 
#5

AW: Keine Exceptions

  Alt 12. Apr 2025, 16:55
Hallo,

MadExcept kümmert sich eigentlich nur um Exceptions um die sich der Entwickler
noch nicht selber gekümmert hat.
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.958 Beiträge
 
Delphi 12 Athens
 
#6

AW: Keine Exceptions

  Alt 12. Apr 2025, 19:16
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).
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
733 Beiträge
 
Delphi 12 Athens
 
#7

AW: Keine Exceptions

  Alt 14. Apr 2025, 10:45
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:
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;
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ß.

Ich habe jetzt mal ein Application.ShowException(E) eingebaut. Dann funktioniert es wie gewohnt.

Geändert von bcvs (14. Apr 2025 um 10:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.371 Beiträge
 
Delphi 12 Athens
 
#8

AW: Keine Exceptions

  Alt 14. Apr 2025, 13:23
AND?

Und im on E: irgendwas do ist E immer assigned.


Delphi-Quellcode:
except
  on E: EEDBError do
    if E.ErrorCode = EDB_Error_SessionNotFound then
      ...
    else
      ...;
  on E: Exception do
    ...;
end;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.642 Beiträge
 
Delphi 12 Athens
 
#9

AW: Keine Exceptions

  Alt 14. Apr 2025, 14:22
Es ist zwar nicht in einem except-Block, sondern im Application.OnException , aber selbst da ist die übergebene Exception immer eine gültige Instanz.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.686 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: Keine Exceptions

  Alt 14. Apr 2025, 14:52
Zitat:
ist die übergebene Exception immer eine gültige Instanz.
Hm, da bin ich mir nicht so sicher. ich meine mich zu erinnern, mal Ewigkeiten nach einem Bug gesucht zu haben, wo das Exception-Objekt NIL war. Wenn ich mich jetzt nur noch an die Details erinnern könnte.

Edit: Gefunden. Nur gut, dass ich über so was immer gleich blogge.
Thomas Mueller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:39 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