我正在使用boost测试框架1.47而且我在测试异常时遇到了困难
这是我的异常类
class VideoCaptureException : public std::exception
{
std::string m_Description;
public:
VideoCaptureException(const char* description)
{
m_Description = std::string(description);
}
VideoCaptureException(const std::string& description)
{
m_Description = description;
}
virtual ~VideoCaptureException() throw() {}
virtual const char* what() const throw()
{
return m_Description.c_str();
}
}
我正在尝试测试只是抛出此异常的代码
BOOST_CHECK_THROW( source.StopCapture(), VideoCaptureException )
由于某种原因,它不起作用。
unknown location(0): fatal error in "testVideoCaptureSource": unknown type
testVideoCaptureSource.cpp(28): last checkpoint
我做错了什么?
答案 0 :(得分:6)
在我自己遇到这个错误后,我将其追踪到一个愚蠢但容易犯错的错误:
throw new VideoCaptureException( "uh-oh" );
将失败,并显示错误消息:
throw VideoCaptureException( "uh-oh" );
会成功。
new
变体导致捕获异常的指针,而不是异常本身。升级库不知道如何处理这个问题,所以它只是说"未知类型"。
如果图书馆能够正确地解释这种情况,那将会很好,但希望其他任何人都会发生致命错误:未知类型"会找到这个页面,看看如何解决它!