首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Boost.Test捕获自定义异常?

如何使用Boost.Test捕获自定义异常?
EN

Stack Overflow用户
提问于 2010-07-16 00:18:22
回答 4查看 1.7K关注 0票数 3

当我使用Boost.Test测试我的C++类时,我的自定义异常被抛出(它们是我的类的实例),这是我在日志中看到的消息:

代码语言:javascript
复制
unknown location:0: fatal error in "testMethod": unknown type

它提供的信息非常少,而且我不知道如何教Boost.Test将异常转换为字符串并正确显示它。我的Exception类有operator string(),但它不起作用。有什么想法吗?谢谢!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-16 00:40:21

我相信如果您的自定义异常类继承自std::exception,它将会工作。

票数 2
EN

Stack Overflow用户

发布于 2010-07-16 00:37:22

您可能需要在std命名空间中定义一个operator<<:

代码语言:javascript
复制
namespace std {
    inline std::ostream& operator<<(std::ostream& os, const Exception& ex) {
        os << ex.string();
        return os;
    }
}

这应该允许boost.test显示异常的内容。

我发现这是必要的,这样就可以用BOOST_CHECK_EQUAL()等方法测试对象。

票数 1
EN

Stack Overflow用户

发布于 2010-07-16 00:38:53

除了使用BOOST_CHECK_THROW或类似方法外,您可以测试函数是否抛出指定的

请参阅Boost.Test Docs

代码语言:javascript
复制
class my_exception{};

BOOST_AUTO_TEST_CASE( test )
{
   int i =  0;
   BOOST_CHECK_THROW( i++, my_exception );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3257610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档