Try-catch-Versuche stürtzen immer ab wieso?



  • hallo ich wollte mich nun mal darum bemuehen mich mit ausnahmebehandlungen auseinander zu setzen und habe hier zu mal eine einfache anwendung geschrieben.

    #include <iostream>
        using namespace std;
    
    #pragma hdrstop
    #pragma argsused
    
    int add( int, int );
    
    class error {
    
    };
    int main( int argc, char* argv[] ) {
    
        int x, y, erg;
        bool flag = true;
    
        do {
        try {
    
            cout << "\n Enter here two positv values!\n" << endl;
            cin >> x >> y;
            erg = add( x, y );
        }
    
        catch( string &s ) {
    
            cerr << s << endl;
            cin.sync();
            cin.clear();
            getchar();
        }
    
        catch( error& ) {
    
            cerr << "Division durch 0" << endl;
            cin.sync();
            cin.clear();
            getchar();
        }
    
        catch( ... ) {
    
            cerr << "Undefine error" << endl;
            cin.sync();
            cin.clear();
            getchar();
            flag = false;
    
        }
            cout << " Ergebnis: " << erg << endl;
    
        } while( flag );
    
        return 0;
    }
    
    int add( int a, int b ) {
    
        if( b < 0 ) {
    
            throw (string) " Negativer Nenner!";
        }
        else if( b == 0 ) {
    
            error er;
            throw er;
        }
        return( (a / b ) );
    }
    

    so, lässt sich problemlos compilieren und wenn ich die anweisungen beachte also kein negativen nenner oder einen der !=0 ist arbeitet das prog ohne probleme. doch wollte ich ja gerade die ausnahmebehandlungen ausprobieren. also mache ich absichtlich einen fehler bleibt er immer bei den throw befehlen hängen und das prog kackt ab und es erscheint bei mir eine DlgBox "Step&Run" ect. also wieso bleibt er bei throw immer hängen??, fuer hilfe bin ich dankbar



  • Ja dann mach doch mal "Run" 😉

    Beim VS2005 kann man einstellen, dass der Debugger anspringt wenn Exceptions fliegen, damit Du Dir den Kontext genau ansehen kannst (könnte ja auch ein logischer Fehler im Programm sein). Kann man aber (Menü Debug->Exceptions imho) auch abschalten.



  • Was issen das für ne Ausdrucksweise? "kackt ab"...

    Naja, wenn du mal einen Button in dem Dialog gedrückt hättest, wüsstest du das das Programm nicht abgestürzt ist. Ist nur eine Hilfestellung der IDE.



  • hmm ok... danke



  • Das (string)"blablabla" sieht auf jeden Fall schonmal ungünstig aus. Dann doch lieber string("blablabla");


Log in to reply