使用BOOST测试异常

Eri*_*ric 6 c++ testing boost exception

我正在使用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();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试测试只是抛出此异常的代码

BOOST_CHECK_THROW( source.StopCapture(), VideoCaptureException )
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它不起作用.

unknown location(0): fatal error in "testVideoCaptureSource": unknown type
testVideoCaptureSource.cpp(28): last checkpoint
Run Code Online (Sandbox Code Playgroud)

我做错了什么?

Dav*_*ave 8

在我自己遇到这个错误之后,我将其追踪到一个愚蠢但容易犯错的错误:

throw new VideoCaptureException( "uh-oh" );
Run Code Online (Sandbox Code Playgroud)

将失败并显示该错误消息,同时:

throw VideoCaptureException( "uh-oh" );
Run Code Online (Sandbox Code Playgroud)

将会成功.


new变量导致捕获异常的指针,而不是异常本身.boost库不知道该怎么做,所以它只是说"未知类型".

如果图书馆正确解释了这种情况会很好,但希望其他任何人遇到"致命错误:未知类型"会找到这个页面并看看如何解决它!

  • 我想报告我找到了这个页面,并且能够修复它:)至少花了我生命中的一个小时...... (2认同)