Visual Studio 2010:64ビットのWindows Winforms例外の取り扱いエニグマ
Visual Studio 2010で奇妙な問題が発生します。64ビットのウィンドウで実行されているWinformsアプリケーションでは、扱いにくい例外が静かに消えることがよくあります。 アプリケーションは、予想されるエラーメッセージまたはデバッガーの休憩なしで実行を継続します。
根本原因を理解する
この動作は、64ビットシステムで32ビットコードをエミュレートするWindowsの「Wow64」レイヤーにリンクされています。 64ビットのウィンドウマネージャーがイベント(イベントなど)をトリガーすると、WOW64は32ビットプロセスのコードを傍受します。 この傍受されたコード内の未解決の例外はマスクされており、デバッガーがそれらをキャッチするのを防ぎます。
Load
デバッガー例外設定:
in debug>例外、CLRの例外については、「スローされた」ボックスを確認してください。 これにより、例外が発生したときにデバッガーが一時停止しますロードイベント例外処理:イベントハンドラー内のコードを
ブロックに巻き付けます。
Load
グローバル例外処理:try-catch
catch
メソッドを使用します。これにより、デバッグモードでは扱われていない例外がキャッチされますが、
イベントハンドラーのレビュー:問題のあるコードがApplication.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
イベントにある必要があるかどうかを検討します。 このイベントは必ずしも必ずしも不可欠ではなく、特にVB.NETで不必要に使用すると、より良いイベントハンドラーの選択肢が不明瞭になる可能性があります。
Main()
ThreadException
これらのソリューションのいずれかを実装することにより、64ビットウィンドウのVisual Studio 2010 Winformsアプリケーションで、ハンドルのない例外を効果的にデバッグおよび処理できます。
以上がVisual Studio 2010の未処理の例外が、64ビットのウィンドウにあるWinformsアプリが消えるように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。