try, catch Problem



  • Hallo,
    ich habe noch nie mit try und cach gearbeitet. Jetzt habe ich mich da ein bisschen eingelesen und versucht, aber bei mir klappt das einfach nicht. Evtl könnt ihr mir ja sagen wie das geht...

    Hier mal mein Quelltext:

    #include <complex>
    ...
    using namespace std;
    typedef complex<double> comp;
    .
    .
    .
    try{
    a->set_Y(       comp(edt_11r->Text.ToDouble(),edt_11i->Text.ToDouble()),
                                                            comp(edt_12r->Text.ToDouble(),edt_12i->Text.ToDouble()),
                                                            comp(edt_21r->Text.ToDouble(),edt_21i->Text.ToDouble()),
                                                            comp(edt_22r->Text.ToDouble(),edt_22i->Text.ToDouble()));
                                            if(a->berechne_A(a->get_Y(),0))
                                                    ba = true;
                                            if(a->berechne_Z(a->get_Y(),0))
                                                    bz = true;
                                            if(a->berechne_h(a->get_Y(),0))
                                                    bh = true;
                                            by = true;
                                            }
                                            catch(...)
                                            {
                                                    MessageBox(NULL,"Die Eingaben sind nicht korrekt.\nVielleicht haben Sie ein \".\" anstatt ein \",\" eingegeben, oder keine gültige Zahl.",
                                                                    "Falsche Eingabe...",MB_OK);
                                            }
    

    Ich bekomme aber wenn ich ein . anstatt ein , eingeben immer eine Exception vom Typ TConvertError. Diese wird aber von dem catch(...)-Block icht abgefngen. Warum??? Was muss ich denn in die Klammern hinter catch schreiben, dass nur diese eine Exception abgefangen wird.

    MfG
    Muecke



  • Beim Start aus der IDE heraus wird die Exception trotzdem angezeigt, das kann in den Debugger-Optionen ein- bzw. abgestellt werden.
    Beim Start ausserhalb der IDE wird die Exception planmässig abgefangen.



  • Danke. Du hast recht.
    Wie stelle ich das denn in den Optionen um?
    Und was muss ich bei catch() in die Klammern schreiben, dass der nur exceptions vom Typ TConvertError abfängt?



  • http://www.c-plusplus.net/forum/viewtopic-var-t-is-39264.html

    Und im Debugger-Optionsdialog einfach mal den Hilfe-Button anklicken.


Anmelden zum Antworten