任何人都可以告诉我如何抛出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());
答案 0 :(得分:2)
删除第一个throw
。 boost::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 ++,允许您在保留原始异常类型的同时将附加信息附加到异常。有关详细信息,请查看链接的文档。