簡體   English   中英

Visual Studio 2015意外地破壞了處理的異常

[英]Visual Studio 2015 unexpectedly breaking on handled exceptions

一張圖片值得一提,以下是可能的:

Visual Studio 2015打破它不應該

可以看出,Visual Studio 2015(最新版本)中斷了Exception Settings下的Common Language Runtime Exceptions ,選中了Tools > Options > Debugging下的Enable Just My Code ,並且明確處理了異常(在try / catch塊中) )。

該行失敗並導致中斷是對外部API的調用(這有點錯誤,因此是try / catch塊)。

我錯過了一些可以證明休息的理由或者這是一個錯誤嗎? 我認為這個其他問題會提供一些見解,但遺憾的是它沒有幫助(處理異常因此我們不需要Continue When Unhandled in User Code選項中啟用額外的“ Continue When Unhandled in User Code

這個例外有一個特例,我猜這里適用。 來自文檔

AccessViolationException和try / catch塊

從.NET Framework 4開始,如果異常發生在公共語言運行庫保留的內存之外,則結構化異常處理程序中的catch語句不會處理公共語言運行庫拋出的AccessViolationException異常。 若要處理此類AccessViolationException異常,應將HandleProcessCorruptedStateExceptionsAttribute屬性應用於引發異常的方法。 此更改不會影響用戶代碼拋出的AccessViolationException異常,這些異常可以繼續被catch語句捕獲。 對於為.NET Framework的先前版本編寫的代碼,您希望在.NET Framework 4上重新編譯和運行而不進行修改,您可以將該元素添加到應用程序的配置文件中。 請注意,如果已為AppDomain.FirstChanceException或AppDomain.UnhandledException事件定義了處理程序,則還可以接收異常通知。

正如文檔所說,解決方案是將HandleProcessCorruptedStateExceptionsAttribute添加到Start()方法。 如果不可能(例如,這是通過庫提供的),我猜你可以添加一個包裝調用的方法,並將該屬性添加到該包裝方法。

您可以在以下鏈接中查看答案如何處理AccessViolationException

由於許多原因,在.NET 4.0中,運行時將一些異常處理為Windows結構化錯誤處理(SEH)錯誤,作為損壞狀態的指示符,並且這些異常不能作為常規異常捕獲。

請享用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM