4
は以下とします新しい例外オブジェクトへの例外オブジェクト参照を渡すことは安全ですか?
struct wrapper_exception {
std::runtime_error& err;
wrapper_exception(std::runtime_error& _e) : err(e) {}
};
try {
throw std::runtime_error("foo");
} catch (std::runtime_error& err) {
throw wrapper_exception(err);
}
質問:は、それが処理された後wrapper_exception内runtime_errorへの参照にアクセスするために安全ですか?
これは私の解釈でもあります。別の方法としては、ここで説明するBoost Exceptionを使用することができます:http://www.boost.org/doc/libs/1_48_0/libs/exception/doc/tutorial_enable_error_info.html - Boostが元の例外をコピーするのを助けるOPのラッパー実装ではなく、余分な情報を追加する必要があります。 –
私はこれも正しい解釈だと思います。 C++ 11では、exception_ptrとrethrowを明確に処理するいくつかの専門クラスが追加されています。しかし、これらのクラスを使用しない場合、 'throw'だけが元の例外を保持することができます。 –