私は/ clrでコンパイルされたMFCアプリケーションを持っています。それ以外の場合は、捕捉されないマネージ例外の最終ハンドラを実装しようとしています。ネイティブ例外の場合は、CWinApp::ProcessWndProcException
をオーバーライドします。最終的に管理される例外ハンドラは、ネイティブ/管理実行可能ファイルが混在していますか?
JeffのCodeProject article、Application.ThreadException
およびAppDomain.CurrentDomain.UnhandledException
で提案された2つのイベントは発生しません。
誰かが複合実行ファイルの最終的な管理例外ハンドラを提供する方法を提案できますか?
更新:
それは、これらの例外ハンドラのみApplication.Run
の下流または類似のトリガーされることが表示されます(ワーカースレッドの風味があります、名前を覚えてすることはできません。)あなたは本当に世界的にキャッチしたい場合SEHフィルタをインストールする必要があります。あなたはSystem.Exception
を取得するつもりはなく、コールスタックが必要な場合は、自分の歩行者を動かす必要があります。
このトピックに関するMSDNフォーラムの質問では、try ... catch (Exception^)
のメインMFCスレッドの十分に低いレベルのポイントをオーバーライドすることを推奨しました。例えば、CWinApp::Run
。これは良い解決策かもしれませんが、私はperfや安定性の影響を見ていません。保釈の前にコールスタックを使用してログを取るチャンスがあります。また、デフォルトのウィンドウで妥協のない例外動作を回避できます。
私があなたが言及した2つのイベントでキャッチされていないスローされている例外についてもっと知るのに役立つだろうか? – Charlie
すべてのマネージ例外。System :: Exceptionの継承元。上記のイベントのポイントは、/ any/managed例外がキャッチされなかったときに発生することです。 –