Ich hab im Gunde die ExceptionBehandlung von Delphi genommen und etwas umgestaltet/erweitert.
Unter Anderem initialisiert sich meine Exceptionbehandlung nur einmal (halt so ähnlich wie mein MemoryManager) und wenn diese von einem weiteren Modul (EXE und DLLs im selben Prozess) benötigt wird, dann initialisiert dieses Modul keine eigene Instanz davon, sondern nurtzt die bereits Vorhandene.
Die DelphiVersion erzeugt für jedes Modul eine eigene Instanz, wo z.B. beim initialisieren überall schon am Anfang ein OutOfMemory-Objekt erzeugt wird (wenn zuwenig Speicher vohanden ist, dann kann ja eventuell auch schon für dieses Ojkekt der Speicher nicht mehr ausreichen, also muß es schon vorher existieren, auch wenn es "hoffentlich" nie benötigt wird ... somit existieren in einem "StandardProgramm" mit mehreren DelphiModulen (EXE und/oder ein/mehrere DLLs, welche mit Delphi erstellt worden) auch mehrfach diese Exceptionbehandlungen und natürlich auch mehrere OutOfExceptionsobjekte und noch einiges mehr (was also "unnötig" im Speicher rumliegt).
Bei mir wird's in Zukunft (wenn alles mal richtig läuft) unter Anderem noch 'ne "Sparversion" davon geben denn wenn man ganz sicher weiß, daß in einer statisch geladenen
DLL diese Exceptionbehandlung vorhanden ist, dann kann man ja auch diese verwenden und benötigt z.B. in der EXE keine eigenen mehr ... man könnte dann also in der sogar die ganzen Codes für eine eigene Exceptionbehandlung weglassen (spart dann nicht nur Speicher, sondern verkleinert auch noch die Programmdatei)
und das Prüfen:
Delphi macht
Delphi-Quellcode:
If Object is Exception Then Begin
...
// behandle über das ExceptionObject
End Else Begin
...
// gib nur die "Fehler xyz bei Adresse abc aufgetreten"-Meldung aus
End;
und bei mit wird "nur" so geprüft:
Delphi-Quellcode:
If Object.
Name = '
Exception'
Then Begin
...
(natürlich nicht "nur" so einfach, da ich natürlich noch prüfen muß, ob ein Vorfahre des Objekts "
Exception" heißt, falls es mal nicht selber so heißt, da es z.B. von soeinem abgeleitet wurde.
Weglassen kann ich diese Prüfung ja nicht, da eine
Exception auch mal ohne ExceptionObjekt ausgelöst werden könnte und dann dieses natürlich nicht vorhanden wäre, oder auch mal ein Fehler in der
Exception selber drin sein könnte, wo dann z.B. kein "gültiges" ExceptionObjekt existieren würde.
Man könnte also auch ein eigenes Objekt erstellen, welches "
Exception" heißt, solange die beiden ersten "Variablen" darin den ExceptionText und den HilfeKontext (der kann auch 0 sein) enthalten (dieses ist ja eigentlich nur das, worauf es ankommt).
Aber wie gesagt, bis jetzt läuft es noch nicht so ganz, da anscheinend irgendwas von der SysUtils noch mit initialisiert wird, was ich noch nicht rausgefunden hab und was nicht in dem SysUtils-QuellCode drinsteht.