Any reasons why an exception would not be caught by BOOST_CHECK_THROW?

I have an exception class that is not getting caught my BOOST_CHECK_THROW. Here is a similar setup to what I have: class Base_Exception : public virtual std::exception { public: virtual ~Base_Exception() throw{} virtual const char* what () const throw() = 0; virtual const char* name () const throw() = 0; boost::uint32_t const& id () const throw(); private: boost::uint32_t id; }; class Child_Exception : public virtual Base_Exception { public: enum ERROR_ID { INVALID_API_INPUT, CANNOT_FIND_TARGET, INTERNAL_LIBRARY_ERROR, }; Child_Exception ( ERROR_ID message_id ); virtual ~Child_Exception () throw () {} virtual const char* what () const throw(); virtual const char* name () const throw(); private: static const char* m_exception_name; static const char* m_messages[]; }; I find that when I use the BOOST_CHECK_THROW ( expression, Child_Exception ) that I still get the test crashing with an uncaught exception. Here is the actual output: terminate called after throwing an instance of 'libreverse::errors::API_Exception' what(): Internal library error has occurred. At this point consider the library unreliable. unknown location(0): fatal error in "test_wrong_sources": signal: SIGABRT (application abort requested) *** errors detected in test suite "Architecture Type Detector suite"; see standard output for details FAIL: test_arch_type_detector I can send the whole test file but I hope this is enough to understand the nature of the problem. Is there a FAQ about BOOST_CHECK_THROW? Stephen
participants (1)
-
Stephen Torri