Erklarung von exception Handling für nen Noob



  • Hey also ich hab mal ne Frage ich bin schüler und hab erst seit sommmer C++ im Unterricht. Jetz soll ich ein freiwilliges Referat schreiben über "Exception Handling". Kann mir einer (oder mehrere) erklären was das genau ist und mir nen leicht verstdänliches Beipiel dazu geben und vor allem die richtige "catch" anwendung erklären, weil meine ganzen übungsprogs funktionieren alle net.
    Ein kleine Beispiel wär echt super.
    Mfg Christian
    P.S.: Danke schonmal im vorraus



  • glaub da gibts nen artikel dazu (unten)



  • Hallo

    hier kannst du anfangen. Google und die Forensuche liefert den Rest.

    bis bald
    akari





  • Artchi schrieb:

    Oder hier: http://www.kharchi.de/cppratgeber3.htm

    obwohl du es im code zwar gemacht hast fehlt die aussage:
    throw by value, catch by reference

    und du solltest erwaehnen dass throw spezifikationen sinnlos und lieber unterlassen werden sollten...

    ich finde die beispiele am schluss sind ne nette idee...



  • Hey also erstmal danke für euere Hilfe, aber ich versteh trotzdem noch nicht was in die Catch(?????) Klammer soll.
    Weiter hab ich mal nen ganz einfaches prog geschrieben und ich weiß0 net was daran falsch ist aber wenn ich bei Zahl 2 gleich null eingeb dann machts bumm (nicht lachen über mein prog).
    Hier ist es mal:

    #include<iostream>
    #include<conio>
    using namespace std;

    void main()
    {
    try
    {
    int Zahl1=1;
    int Zahl2=1;
    int erg=999;
    cin>>Zahl1;
    cin>>Zahl2;
    erg=Zahl1/Zahl2;
    cout<< erg;
    }

    catch (...)
    {
    cout << "Fehler";

    }

    getch();

    }

    Mfg Christi



  • Also Zahl1 durch 0 ist nicht erlaubt!!! Da fliegt dir die CPU aus der Bahn. Hat nichts mit C++ zutun. Normalerweise, wenn sowas sicher sein soll, muß man Zahl2 vorher mit if auf 0 prüfen, und nur wenn es ungleich 0 ist, die Rechnung druch führen. Hast wohl nicht meinen geposteten Link oben nicht gelesen? Da ist doch so ein Beispiel bei.

    catch(...) heißt "fang alles ab". Wenn es aber bei durch null nicht hilft, ist die Ursache tiefer in der Hardware, in dem Fall CPU. Da kann auch C++ nichts mehr reissen.



  • Hallo Christi,

    dein Programm stürzt bei einer Division durch Null ab, weil die entstehende Exception nicht von deinem Programm, sondern vom Prozessor geworfen wird. Diese Exception wird grundsätzlich vom Betriebssystem aufgefangen, was dann zu besagtem Programmende und einer Fehlermeldung führt. Es gibt eine Möglichkeit auch solche Exceptions aufzufangen, was aber den Umfang deiner Arbeit wohl sprengen würde.

    Erweitere dein Programm ganz einfach um folgende Zeile, an der Stelle nachdem die zweite Zahl eingelesen wurde:

    if (Zahl2 == 0) throw Zahl2;
    

    Damit sollte dein Programm wie gewünscht funktionieren.

    Gruß



  • Hey also erstmal danke für eur hilfe hab es endlich so halbwegs geschafft (musst erst ma in den debugger optionen einstellen das er net bei exceptions automatisch das Prog stoppen soll). Aber ich hab noch ein Problem:
    Wie ist das mit dem catch was kann ich da alles in die klammer schreiben und wie und was bedeutet das dann, wär gut wenn mir jemadn helfen könnte.
    Danke.
    Mfg




Log in to reply