Excaption Handling schlägt fehl?



  • Hi!

    Hab grad auf anraten mal folgenden Beitrag zu Excaptions gelesen:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39264

    Doch leider hilft es bei meinem Problem nicht weiter, ich habe
    eine Codestelle an der manchmal Excaptions auftreten die ich
    abfangen will. Hab das dann so gemacht:

    try{
    Memo1->Text=IdHTTP1->Get(Edit5->Text+"?SQLString="+Edit2->Text);

    catch(...){
    MessageBox ( NULL, "Dohh", "Hallo von?", MB_OK );
    }

    Doch wenn ich absichtlich eine Excaption durch falscheingabe auslöse,
    schmiert das Programm immernoch ab und öffnet nicht dies MessageBox
    wie in catch festgelegt. Hab ich irgendeine Option nicht gesetzt oder wo ist der Fehler??

    MFG

    Maruu



  • Naja.. du hast die geschweifte Klammer vor catch vergessen, aber das wird es ja wohl kaum sein...

    Was heißt "schmiert ab"? Ich würde verstehen, wenn erst die übliche Exception-Meldung kommt, aber anschließend deine MessageBox kommt... aber eigentlich sollte es so klappen. Wenn die Exception wirklich im try-Block ausgelöst wird.



  • Jo die Klammer hab ich im Quelltext schon drin, is nur beim Kopieren abhanden gekommen. sieht also so aus:

    try{
    Memo1->Text=IdHTTP1->Get(Edit5->Text+"?SQLString="+Edit2->Text);
    }
    catch(...){
    MessageBox ( NULL, "Dohh", "Hallo von?", MB_OK );
    }

    Wenn ich nun ne Falsche Eingabe mache, schmiert er ab, der Grüne Peil der anzeigt in Welcher Zeile der Fehler ist, zeigt aus die Zeile mit Memo1->...
    und die Folgende Meldung kommt:

    http://maruu.dyndns.org/exception.jpg

    Die Dialogbox wird aber nicht aufgerufen.
    Mhhm is irgendwie komisch. Wart könnte das sein?

    MFG

    Maruu



  • Die IDE zeigt dir als Programmierer immer die Originalfehlermeldung an.

    Wenn du das Programm aus dem Explorer heraus aufrufst, solltest du deine MessageBox sehen können.



  • Tatsache das muss man erstmal wisse *G*

    Danke hat mir sehr geholfen!!

    MFG

    Maruu



  • Kann man übrigens bei Tools/Debugger/Sprach-Exceptions abschalten...

    Hättest du die Exceptionmeldung bestätigt und F9 gedrückt, wäre wahrscheinlich deine Message-Box gekommen...



  • Das alles steht natürlich auch in o.g. FAQ-Beitrag ...



  • oh sorry das hab ich glatt überlesen. Hab noch ne kleine Frage:
    Die Exception EIdProtocolReplyError wird bei mehreren Fehlern der
    IdHTTP Komponente ausgelöst, z.B. bei nem 404 Error oder nem 401 Error.
    Kann ich irgendwie abfragen im Catch Block welcher Error diese
    Excaption ausgelöst hat???
    Hier der Code:

    try{
    Memo1->Text=IdHTTP1->Get(Edit5->Text+"?SQLString="+Edit2->Text);
    }
    catch(EIdProtocolReplyError& e){
    MessageBox ( NULL, "Error", "Hallo von?", MB_OK );
    }

    MFG

    Maruu



  • Ok wer lesen kann ist klar im Vorteil ich gebs zu, geht mit z.B.
    e.ReplyErrorCode da stehen die ganzen Fehler als Integer drin.

    MFG

    Maruu



  • ... gutes Design muß nicht teu(r)er sein


Anmelden zum Antworten