AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Nicht behandelte Exception in DLL zentral behandeln
Thema durchsuchen
Ansicht
Themen-Optionen

Nicht behandelte Exception in DLL zentral behandeln

Ein Thema von Bernhard Geyer · begonnen am 14. Nov 2014 · letzter Beitrag vom 20. Jan 2015
 
Benutzerbild von himitsu
himitsu

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

AW: Nicht behandelte Exception in DLL zentral behandeln

  Alt 14. Nov 2014, 15:49
Die Exceptionbehandlung ist in der System.pas geht absichtlich auf Pointer und nicht TObject oder gar auf Exception.
In Delphi sind zwar alle Exceptions von Exception abgeleitet, aber dann getrennter RTTI hat die DLL eigene Versionen von TObject/Exception, welche grundsätlich nicht kompatibel mit der EXE sind, vorallem nicht wenn es sich um unterschiedliche Compiler handelt.
Delphi Version X, Delphi Version Y, C++Builder, C++, Free Pascal oder sonstwas.

In der EXE kommt also eine "Exception" an, aber sie wird nicht als Delphi-Exception-Klasse erkannt.
Man könnte jetzt natürlich in der EXE diese Exception behandeln und über blinde Casts oder Zeigergefummele den Klassennamen und die Message auslesen, aber besser ist es das in der DLL zu behandeln und auf anderen Wege (z.B. Fehlercodes) rauszugeben.

Zitat:
Meine Idee wäre jetzt auf dieser Ebene (Vermutlich würde Hooking von TApplication.HandleException reichen) und eine Erkennung einzubauen ob das Exception-Objekt wirklich ein D6.TObject ist. Falls nein dann die Plugins fragen ob dieses Objekt von ihnen kommt und dann über die DLL-Schnittstelle den Exception-Text abfragen.
Könnte man machen, indem man den Speicher analysiert, wichtige Daten ausliest und dann entweder selber die Exception behandelt, oder aus diesen Daten ein neues Exception-Objekt erstellt, welches weitergegeben wird.



Alternativ linkt man halt DLL und EXE gegen die RTL und schon kann man die Exceptions problemlos rausgeben.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Nov 2014 um 15:51 Uhr)
  Mit Zitat antworten Zitat
 


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 23:56 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