/clr でコンパイルされた MFC アプリケーションがあり、キャッチされないマネージ例外の最終ハンドラーを実装しようとしています。ネイティブ例外の場合、オーバーライドCWinApp::ProcessWndProcException
が機能します。
Jeff のCodeProject 記事で提案されている 2 つのイベントApplication.ThreadException
とAppDomain.CurrentDomain.UnhandledException
は発生しません。
混合実行可能ファイルに最終的なマネージド例外ハンドラーを提供する方法を提案できる人はいますか?
アップデート:
これらの例外ハンドラーは、ダウンストリームApplication.Run
または同様のものでのみトリガーされるようです (ワーカー スレッド フレーバーがあり、名前を思い出せません)。マネージ例外を完全にグローバルにキャッチしたい場合は、SEH フィルターをインストールする必要があります。System.Exception
コールスタックが必要な場合は、独自のウォーカーをロールバックする必要があります。
このトピックに関する MSDN フォーラムの質問では、try ... catch (Exception^)
. たとえば、CWinApp::Run
. これは良い解決策かもしれませんが、パフォーマンスや安定性への影響については調べていません。保釈する前にコール スタックをログに記録する機会が得られ、デフォルトの Windows 未処理の例外動作を回避できます。