Einzelnen Beitrag anzeigen

taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#1

Exception-Objekt in OnException auswerten

  Alt 2. Jul 2008, 21:04
Moin, Moin.

Ein kleines Problem:

Mein Programm verwendet eine mit ZLibEx V1.2.3 komprimierte Datei. Um das Fehlerverhalten zu testen, habe ich absichtlich die komprimierte Datei "beschädigt". Erwartungsgemäß kann sie nun nicht mehr dekomprimiert werden und in ZLibEx wird eine Exception ausgelöst - so soll es ja auch sein.

Aktiviere ich in den Debugger-Optionen die Auswahl "Bei Delphi-Exceptions stoppen" und starte das Programm, öffnet sich ein Fenster, in dem eine Exception der Klasse EZDecompressionError und der Meldung 'data error' gemeldet wird. Also genau die Informationen, die von ZLibEx abgeschickt werden.

Sehr gut. Nun möchte ich dieses natürlich durch meinen Programmcode auswerten lassen und eine individuelle Meldung anzeigen. Also deaktiviere ich die Option in den Debugger-Optionen und nutze im Code ApplicationEvents.OnException(). Da an dieser Stelle natürlich alle möglichen Exceptions ankommen können, muss ich natürlich prüfen, ob die Exception von der Unit ZLibEx kommt. Nun erwarte ich, dass das übergebene Exception-Objekt die notwendigen Informationen bereitstellt und ich (wie in der Debugger-Meldung) näheres erfahre. Aber diese Informationen kann ich nicht ermitteln - und das ist nun mein Problem:

Delphi-Quellcode:
procedure TfoMain.ApplicationEvents1Exception(Sender:TObject;E:Exception);
begin
  showmessage(e.ClassParent.ClassName); // >> Anzeige : EExternal
  showmessage(e.Message); // >> Anzeige : Zugriffsverletzung ....
  showmessage(e.ClassName); // >> Anzeige : EAccessViolation
end;
Die Informationen sind ja nicht schlecht, aber geben mir in dieser Form keine Auskunft, wer die Exception ausgelöst hat.
Wäre über einen Tip sehr dankbar.
Ralph
  Mit Zitat antworten Zitat