Exceptions lassen sich nicht catchen

Dieses Thema im Forum "C/C++" wurde erstellt von HPollak, 20.02.2010.

  1. #1 HPollak, 20.02.2010
    HPollak

    HPollak Foren As

    Dabei seit:
    21.12.2007
    Beiträge:
    93
    Zustimmungen:
    0
    Hallo!!!

    Ich beschäfftige mich seit kurzem wieder mit C++ ( ist schon verdammt lange her ), war in den letzten Jahren mit Java unterwegs.

    Jetzt stehe ich for folgendem Problem:

    Ich möchte unter Linux (gcc 4.4 und der Boost-Lib ) ein Programmchen schreiben und dabei eine Exception werfen bzw. abfangen, da ich einen Constructor verwenden möchte der das Object mit Daten aus einem XML-String füllt.

    als Excpetion hab ich folgenden code verwendet:

    Code:
    #include <boost/throw_exception.hpp>
    #include <boost/exception.hpp>
    #include <boost/detail/lightweight_test.hpp>
    #include <boost/config.hpp>
    
    typedef boost::error_info<struct tag_errmsg, std::string> errmsg_info; 
    
    class xmlSerializeExcpetion: public std::exception {};
    ich möchte die Exception von einer methode aus werfen (nur zum testen mal)

    Code:
    void Address::fromXML(string xml) throw (){
        boost::throw_exception(xmlSerializeExcpetion());
    
    }
    und mit einem CPPUnit-Test mal überprüfen:

    Code:
    void ExceptionTests::raiseXmlSerializeException() {
        Address adr;
        string str ="mystring";
        CPPUNIT_ASSERT_THROW(adr.fromXML(str), xmlSerializeExcpetion );
    }
    
    starte ich nun den test: erhalte ich folgendes ergebnis:
    Code:
    testtest::myTest : OK
    testtest::myTest1 : OK
    ExceptionTests::raiseXmlSerializeExceptionterminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<xmlSerializeExcpetion> >'
      what():  std::exception
    
    anstatt:
    ExceptionTests::raiseXmlSerializeExceptionterminate : OK

    der Test terminiert sollte aber nicht terminieren, denn es ist ja erwartet, dass eine Exception geworfen wird.

    Hat einer von euch eine ahnung was ich falsch mache?

    habs auch schon mit einem Programmchen in der Main methode probiert ich komme nicht in den catch(...) block.

    LG
    Harry:think:
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 SkydiverBS, 20.02.2010
    SkydiverBS

    SkydiverBS Tripel-As

    Dabei seit:
    15.01.2005
    Beiträge:
    207
    Zustimmungen:
    0
    Ort:
    Freising
    Servus!

    Das liegt möglicherweise an dem leeren throw hinter der fromXML Funktion. Damit sagst du dem Kompiler, dass diese Funktion keine Exceptions schmeißt (siehe Exception Specifications). Probiere doch mal was passiert wenn du das "throw ()" wegmachst!

    Gruß,
    Philip
     
  4. #3 HPollak, 21.02.2010
    HPollak

    HPollak Foren As

    Dabei seit:
    21.12.2007
    Beiträge:
    93
    Zustimmungen:
    0
    Ja! danke dass war es!

    war ein kleiner gedankenfehler, dachte mir die throw() -clausel bedeutet, dass sie beliebige exceptions werfen kann.

    wenn ich den excpetiontyp (xmlSerializeExcpetion) angebe, funktionierts auch.

    danke
    harry
     
Thema:

Exceptions lassen sich nicht catchen

Die Seite wird geladen...

Exceptions lassen sich nicht catchen - Ähnliche Themen

  1. Zarafa will Outlook-Unterstützung auslaufen lassen

    Zarafa will Outlook-Unterstützung auslaufen lassen: Zarafa will die Unterstützung von MS Outlook als Client seiner gleichnamigen Groupware auslaufen lassen. Doch möglicherweise hat das Unternehmen...
  2. Inkscape will bezahlte Entwicklung zulassen

    Inkscape will bezahlte Entwicklung zulassen: Die Macher des freien Vektorgrafikprogramms Inkscape haben sich offenbar entschieden, künftig auch bezahlte Entwicklung zuzulassen. Konkret soll...
  3. gentoo-filemanager neue Dateiendung mit bestimmter SW öffnen lassen

    gentoo-filemanager neue Dateiendung mit bestimmter SW öffnen lassen: Hallo Kennt sich hier jemand mit dem filemanger gentoo aus ? Ich hab ejetzt geschlagene 1Std versucht, ihn zu überreden eine *.odt zu...
  4. Partitionen auf SD-Karte lassen sich nicht löschen

    Partitionen auf SD-Karte lassen sich nicht löschen: Hallo, aus meinem Handy stammt eine microSDHC-Karte (4GB), die jetzt einige Zeit nicht verwendet wurde. Ich wollte diese "platt" machen um sie...
  5. Ein Bild im Stream anzeigen lassen (JS / CBE)

    Ein Bild im Stream anzeigen lassen (JS / CBE): servus miteinand, Ich habe mal wieder eine Frage an euch, weil ich da schon seit einigen Wochen ab und zu mal versuche etwas hinzubekommen....