c ++:测试代码是否在catch块中

时间:2012-07-27 17:37:28

标签: c++ exception boost

我正在尝试基于boost :: exception创建一个通用的异常框架。 为此,我使用像这样的宏:

#define AR_THROW_EXCEPTION(internalMessage)\
BOOST_THROW_EXCEPTION(boost::enable_current_exception(ArException())\
<< internal_message(internalMessage)\
<< inner_exception(boost::current_exception()))

我的问题是“boost :: current_exception()”将终止我的程序,如果它没有从catch块调用。 为了避免定义第二个宏“AR_RETHROW_EXCEPTION”,我希望能够做到

#define AR_THROW_EXCEPTION(internalMessage)\
BOOST_THROW_EXCEPTION(boost::enable_current_exception(ArException())\
<< internal_message(internalMessage)\
if (IS_IN_CATCH_BLOCK)\
<< inner_exception(boost::current_exception()))

有人知道吗?

0 个答案:

没有答案