如何抛出提升坏词法演员异常

时间:2016-02-05 11:47:07

标签: c++ boost casting

任何人都可以告诉我如何抛出bad_lexical_cast异常。

对于单元测试模拟,我有以下代码:

if(!Throw)
    return boost::lexical_cast<std::string>(some_value);
else
    throw boost::throw_exception(boost::bad_lexical_cast());

但这会产生如下编译错误:

error: invalid use of ‘void’ throw boost::throw_exception(boost::bad_lexical_cast());

1 个答案:

答案 0 :(得分:2)

删除第一个throwboost::throw_exception是一个单独执行的功能。更具体地说,boost::throw_exception将异常作为参数,并使用该传递参数的副本来抛出异常。

if(!Throw)
    return boost::lexical_cast<std::string>(some_value);
else
    boost::throw_exception(boost::bad_lexical_cast());

boost::throw_exception实际上是Boost.Exception库的一部分,它以一些聪明的方式使用C ++,允许您在保留原始异常类型的同时将附加信息附加到异常。有关详细信息,请查看链接的文档。