首頁 > 後端開發 > C++ > VS2010為什麼不顯示64位Winforms應用程序中的未手動異常消息?

VS2010為什麼不顯示64位Winforms應用程序中的未手動異常消息?

Susan Sarandon
發布: 2025-02-01 22:01:09
原創
540 人瀏覽過

VS2010 64位WinForms應用未顯示未處理異常消息:一個難題

在使用C#和.NET Framework 4在VS2010中創建新的Windows Forms應用程序時,用戶遇到一個關於未處理異常的異常行為。在Form1_Load處理程序中添加特定代碼後,預期在某一行出現的未處理異常消息沒有顯示。相反,代碼執行跳過該行沒有任何錯誤,應用程序繼續運行。

這種特殊的行為歸因於32位代碼通過wow64模擬層與64位Windows 7交互的方式。問題在於此層攔截來自響應64位窗口管理器生成的通知的代碼的異常。結果,調試器無法識別和進入異常。

為了解決這個問題,提出了幾種解決方法:

將平台目標設置為AnyCPU並取消選中“首選32位”

這種方法將應用程序更改為以64位進程運行,消除了wow64模擬層及其相關的異常問題。但是,它可能會影響“編輯並繼續”功能,並且對於依賴於32位代碼的情況可能不可行。

其他解決方法

  • 在“調試”>“異常”中為CLR異常啟用“已拋出”複選框,強制調試器停止在拋出異常的代碼行。
  • 在Load事件處理程序中實現帶有failfast處理的try/catch塊。
  • 在Main()中設置Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)以禁用調試模式下的異常捕獲。
  • 重新評估Load事件處理程序中代碼的必要性,考慮使用替代事件處理程序或構造函數來放置適當的代碼。
  • 升級到Windows 8或更高版本,其中已解決wow64問題。

Why Doesn't VS2010 Show Unhandled Exception Messages in 64-bit WinForms Apps?

以上是VS2010為什麼不顯示64位Winforms應用程序中的未手動異常消息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板