Exceptionhandling in MFC (insbesondere MFC for Embedded)



  • Hallo zusammen,

    ich hab mal eine grundsätzliche Frage zum exceptionhandling....ich schreibe ein MFC Programm für WindowsCE...soweit so gut...jetzt wollte ich da Exceptionhandling einfrickeln...meine erste idee war, das ganz normal C++-exceptionhnadling zu nehmen, also

    try {
                  } catch (my_exception& e){
                         bla
                  }
    

    Dann hab ich was von den MFC Exceptionklassen gelesen...und schließlich von ExceptionHandling für WindowsCE unter MFC...da steht, dass man seine eigenen Exceptionklassen mit DECLARE_DYNAMIC() usw. ausstatten muß und das Handling läuft dann über die folgenden Makros:

    TRY{
                 }
                 CATCH (CMyException, &exc){
    
                 }
                 END_CATCH
    

    Jetzt bin ich mal wieder total verwirrt...muß ich jetzt das MFC-Exceptionhandling nehmen??? Kann ich auch das ganz stinknormale C++-Exceptionhandling nehmen?? oder lauern dann irgendwelche versteckten Fallen...das C++-Exceptionhandling wäre mir echt am liebsten, weil das Programm auch aus Nicht-MFC-Bestandteilen besteht...

    BESTEN DANK FÜR jede ANWORT.



  • Ich arbeite mit C++ Exceptions in meinen MFC Programmen und konnte noch keine Probleme feststellen. 🙂



  • ok, danke...

    ich hab grade mal probiert eine eigene con CUserException abgeleitete Klasse mit dem ganz normalen
    throw CMyException(CString("Ich habe einen Fehler"));

    zu werfen...

    Der Compiler sagt:

    "Class CMyException cannot be thrown (use -W4 for more info)"....was is das denn nun schon wieder????



  • Die MFC-Makros TRY/CATCH()/... bauen afaik auf den normalen try/catch Anweisungen auf und ergänzt noch etwas Speicherverwaltung etc., aber auch in MFC-Anwendungen solltest du mit Normalen C++-Exceptions auskommen.

    (PS: Ein paar Infos zum Thema findest du auch in der MSDN: Ausnahmebehandlung)



  • Die Fehlermeldung sagt mir jetzt nix, aber kannst mal in den Compiler-Optionen schauen ob Exceptions erlaubt sind. Weil im VC kann man das abstellen.


Anmelden zum Antworten