Exceptions in Objekten welche in DLLS instantiert werden



  • Und die Exception ist vom typ "Exception"? Springt er auch nicht in ein - zum schluss gestelltes "catch (...)"?

    -junix



  • Also ich werfe selber keine eigenen Exceptions, sondern fange nur diejenigen ab, die von anderen Funktionen (Borland, System) geworfen werden.

    Ein Cach(...) hat auch nichts gebracht 😞



  • Und die Exception ist vom typ "Exception"? Springt er auch nicht in ein - zum schluss gestelltes "catch (...)"?

    meinst Du das so:

    try
    {
    }
    catch (Exception &exception)
    {
    }
    catch (...)
    {
    }
    

    ??



  • jau



  • Wie gesagt, wenn ich das Objekt in einer Anwendung instantiere ist es kein Problem. Dann funzt auch alles ohne "catch(...)". Nur aus wenn ich das Objekt in einer DLL instantiere geht es nicht. Auch nicht mit anschliessenden "catch(...)".

    Ist doch komisch, dass nicht in die Exceptionanweisung gesprungen wird ,nur weil alles in eiener DLL passiert..... 😕 😕 😕



  • Ich frag mich gerade, wie will ein Programm auf eine Exception reagieren können, welche in einem zu Laufzeit geladenem Modul (DLL) ausgelöst wird ? Das ganze try/catch Geraffel wird vom Compiler "erzeugt" und nicht zur Laufzeit des Programms 🙄



  • Das Programm soll nicht auf die Exception reagieren. Die DLL soll das tun!
    Wenn Fehler, dann soll die DLL diesen in ein Logfile schreiben. Das ist eigentlich alles.



  • Das Programm soll nicht auf die Exception reagieren. Die DLL soll das tun!

    Ach so, dann habe ich das wohl mißverstanden.
    Liegts vielleicht an irgendwelchen Compilereinstellungen ? Ansonsten würde ich mal eine Test-DLL und ein Testprojekt basteln um darin wild probieren zu können 😉



  • Ansonsten würde ich mal eine Test-DLL und ein Testprojekt basteln um darin wild probieren zu können

    ja, genau das habe ich auch gemacht.
    ich komm einfach nicht hinter woher dieses Verhalten kommt 😞
    *schnüff*



  • muss wohl n Borland Fehler oder so gewesen sein.
    Ich hab einfach nochmal den DLL Experten angeschmissen, die DLL-Funktionen per Paste/Kopie in die neue DLL Datei eingetragen und schon ging alles.

    Bleibt mir zu grübeln obs Borland war, oder ob ich im Entwicklungsprozess irgendetwas zerschossen hatte.

    Danke für die Hilfe!



  • Vielleicht wars doch ne Compilereinstellung die Du mit dem Neuerstellen wieder hergestellt hast 🙄



  • Peter,

    Peter schrieb:

    Das ganze try/catch Geraffel wird vom Compiler "erzeugt" und nicht zur Laufzeit des Programms

    was meinst Du damit? Was genau soll der Compiler da "erzeugen"?

    @Clip:
    Von String als Parameter-Typ in DLL's wird i.allg. abgeraten, da AnsiString ein proprietärer(Borland) Typ ist. Die Verwendung von "echten" c-Strings ist hier angebracht.

    extern "C" __declspec(dllexport) long DLLFunction(char* cstr)
    

    Und immer schön auf den buffer overflow aufpassen. Wir sind ja hier nicht bei Microsoft!


Anmelden zum Antworten