H
HPollak
Foren As
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:
ich möchte die Exception von einer methode aus werfen (nur zum testen mal)
und mit einem CPPUnit-Test mal überprüfen:
starte ich nun den test: erhalte ich folgendes ergebnis:
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
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