デストラクタで例外をキャッチしてから再スローすることは可能ですか? もしそうなら、声明
のための明確な場所がないので、どうすればいいですか?try
基本的に、私は理想的にやりたい:
CMyObject::~CMyObject()
{
catch(...) // Catch without a try. Possible?
{
LogSomeInfo();
throw; // re-throw the same exception
}
// Normal Destructor operations
}
背景
どこかで未処理の例外をスローしている大規模で複雑なアプリケーションがあります。トップレベルのメッセージポンプなどに簡単にアクセスできないmain
ため、未処理の例外をすべてキャッチする簡単な場所がありません。
ハンドルされていない例外は、スタックが巻き戻されるときに一連のデストラクタを通過する必要があると思います。だから、私はcatch
デストラクタでたくさんのステートメントを分散させることを考えています。そうすれば、少なくとも、例外がスローされたときにどのオブジェクトが動作しているかがわかります。しかし、これが可能かどうか、または推奨されるかどうかはわかりません。