1

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 ブロックから呼び出されない場合、プログラムを終了させることです。2番目のマクロ「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()))

誰か方法を知っていますか?

4

0 に答える 0