Exception richtig abfangen?



  • Dieser Thread wurde von Moderator/in volkard aus dem Forum C++ in das Forum MFC (Visual C++) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • ups vertippt main = mein 😉



  • _exception schrieb:

    Muss ich vielleicht die Exception irgendwie weiterreichen bis ich zu mein komme?

    Nein, sie fliegt, solange du sie nicht fängst. Wenn dieser Errorcode ausgegeben wird, hast du sie eben nicht gefangen. Zeige ansonsten ein wenig Code. Gut wäre so wenig wie möglich, aber dass das Problem trotzdem reproduziert wird.



  • @_exception:
    Deutsch lernen, Deutsch lernen, Deutsch lernen, Deutsch lernen.
    Tip: Bücher lesen hilft ein wenig, und macht mehr Spass als büffeln.



  • hustbaer schrieb:

    @_exception:
    Deutsch lernen, Deutsch lernen, Deutsch lernen, Deutsch lernen.
    Tip: Bücher lesen hilft ein wenig, und macht mehr Spass als büffeln.

    Da haben mich andere posts (und deren Schreibfehler) schon wesentlich mehr genervt.

    Etwas mehr Toleranz?



  • EOP schrieb:

    Etwas mehr Toleranz?

    War was ich geschrieben habe denn so schlimm?
    Oder findest du dass das Kopfposting grösstenteils leicht lesbare und gut verständliche Sätze enthält? Es geht mir nicht um korrekt, es geht mir bloss darum, dass ich nicht 3x über einen Satz drüberlesen mag, bis ich verstanden habe, was gemeint ist.

    Und was meinst du mit Toleranz? Ist Toleranz gleichbedeutend mit "man darf kein Kommentar dazu abgeben"?



  • _exception schrieb:

    Es funktioniert zwar ich bekomme aber folgenden Fehler unter(Visula c++)

    Eine Ausnahme (erste Chance) bei 0x7651f328 in Assignment2.exe: Microsoft C++-Ausnahme: int an Speicherposition 0x0038f7b8..

    Was auf einen etwas unsauberen Speicher zugriff deutet oder?

    Der Debugger von Visual Studio gibt diese Meldung immer dann aus, wenn irgendwo eine Exception mit "throw" geworfen wird. Die Meldung ist bloss eine Hilfestellung, für Fälle, wo es nützlich ist zu wissen, was für Exceptions geworfen werden - auch wenn diese korrekt gefangen und behandelt werden. Es handelt sich also nicht um einen Fehler, und es deutet auch nicht darauf hin, dass irgendwas "unsauber" ist.

    Sollte die Exception nirgendwo gefangen werden, dann reagiert der Debugger etwas heftiger: er unterbricht die Ausführung des Programms, und zwar an der Stelle, wo die Exception geworfen wird.

    Allerdings ist nichtmal das unbedingt immer als "schlecht" anzusehen: es gibt Fälle, wo genau das die beste Möglichkeit ist, ein Programm zu beenden.

    Und ob es überhaut schlau ist eine Ganzahl zu werfen mit Exceptions ist auch etwas unsauber oder?

    Nö, finde ich nicht schlau. Es gibt in der Standard-Library fertige Exception-Klassen, die man dazu verwenden kann. Beispiel:

    #include <stdexcept>
    #include <iostream>
    
    void test2()
    {
        std::cout << "Anfang test2\n";
        throw std::runtime_error("Fehler in test2");
        std::cout << "Ende test2\n";
    }
    
    void test()
    {
        std::cout << "Anfang test\n";
        test2();
        std::cout << "Ende test\n";
    }
    
    int main()
    {
        try
        {
            test();
            return 0; // alles OK
        }
        catch (std::exception const& e)
        {
            std::cout << "Error:\n"
                << "  Type: " << typeid(e).name() << "\n"
                << "  Message: " << e.what() << "\n";
    
            return 1; // Fehler
        }
    }
    


  • Nexus schrieb:

    Wenn dieser Errorcode ausgegeben wird, hast du sie eben nicht gefangen.

    Er. Nein. Dieser Text wird immer ausgegeben, wenn irgendwo eine Exception geworfen wird. Auch wenn diese dann ganz korrekt gefangen wird.

    Guggstu: http://blogs.msdn.com/davidklinems/archive/2005/07/12/438061.aspx



  • Ok! Danke für die Hilfe!! 👍



  • hustbaer schrieb:

    EOP schrieb:

    Etwas mehr Toleranz?

    War was ich geschrieben habe denn so schlimm?
    Oder findest du dass das Kopfposting grösstenteils leicht lesbare und gut verständliche Sätze enthält? Es geht mir nicht um korrekt, es geht mir bloss darum, dass ich nicht 3x über einen Satz drüberlesen mag, bis ich verstanden habe, was gemeint ist.

    Und was meinst du mit Toleranz? Ist Toleranz gleichbedeutend mit "man darf kein Kommentar dazu abgeben"?

    Eigentlich hast du ja Recht.

    Mich nerven die Legastheniker-posts auch regelmäßig...


Anmelden zum Antworten