System.AccessViolationException 異常處理
在 .NET 應用程序中使用 COM 對象時,經常會遇到 System.AccessViolationException 異常。然而,通常情況下,此異常會被調試器攔截,阻止程序執行並防止已實現的 catch 塊被執行。
造成此問題的原因在於 .NET Framework 4.0 通過 Windows 結構化異常處理 (SEH) 處理異常的方式。某些異常,例如 AccessViolationExceptions,被視為損壞狀態異常 (CSE),由於它們指示狀態損壞,因此標準託管代碼無法捕獲它們。
儘管存在此限制,但仍有一些解決方法可以啟用 CSE 處理:
降級到 .NET 3.5: 將應用程序重新編譯為 .NET 3.5 程序集,並在 .NET 4.0 運行時中執行它。
修改應用程序配置: 在配置文件的 runtime 元素下添加以下行:
<code class="language-xml"> <legacycorruptedstateexceptionspolicy enabled="true"></legacycorruptedstateexceptionspolicy></code>
使用屬性修飾: 使用 HandleProcessCorruptedStateExceptions 屬性來修飾您打算在其中捕獲 CSE 的方法。
有關 CSE 的更多信息,請參閱以下資源:
以上是我如何處理.NET應用中的AccessVioLationExceptions。的詳細內容。更多資訊請關注PHP中文網其他相關文章!