首頁 >後端開發 >C++ >為什麼在64位Windows上的Visual Studio 2010 Winforms應用程序中的未手持異常似乎消失了?

為什麼在64位Windows上的Visual Studio 2010 Winforms應用程序中的未手持異常似乎消失了?

Linda Hamilton
Linda Hamilton原創
2025-02-01 22:21:12270瀏覽

Why Unhandled Exceptions Vanish in VS2010 WinForms Apps (64-bit Windows)

Visual Studio 2010:一個64位Windows Winforms異常處理Enigma

>在Visual Studio 2010中出現了一個奇怪的問題:在64位窗口上運行的Winforms應用程序中的例外通常會靜靜地消失。 該應用程序繼續執行,沒有預期錯誤消息或調試器中斷。

>

>>>理解根本原因>

此行為鏈接到Windows的“ WOW64”層,該層模擬了64位系統上的32位代碼。 當64位窗口管理器觸發事件​​(例如

事件)時,WOW64攔截了32位進程的代碼。 該截獲的代碼中未經處理的例外被掩蓋,從而阻止了調試器捕獲它們。 Load

解決方案和解決方案

幾種策略可以解決此問題:>

    >
  1. 目標平台調整:將項目的“平台目標”更改為“ Anycpu”(在Project Properties> Build中)。這使該應用程序成為64位流程,繞過WOW64。 注意:這可能會導致32位依賴性的兼容性問題。

    >
  2. debugger異常設置:>

    >

    >加載事件異常處理:將代碼包裝在
  3. >

    塊中的事件處理程序中。 在>塊中,終止應用程序以確保注意到例外。 Load try-catchcatch全局異常處理:

    在您的
  4. >方法中使用
  5. 。這在調試模式下捕獲了未經治療的例外,但可能會降低

    >事件的有效性。 > Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException) Main()ThreadException>事件處理程序評論:考慮是否需要有問題的代碼

  6. >事件中。 此事件並不總是必不可少的,並且不必要地使用它,尤其是在VB.NET中,可以掩蓋更好的事件處理程序選擇。

    >>操作系統升級:升級到Windows 8或更高版本,經常解決與WOW64相關的問題。 Load

  7. 通過實現這些解決方案之一,您可以有效地調試和處理Visual Studio 2010 Winforms在64位Windows上的winforms應用程序。

以上是為什麼在64位Windows上的Visual Studio 2010 Winforms應用程序中的未手持異常似乎消失了?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn