在 .NET 應用程式中使用 COM 物件時,強大的異常處理至關重要。 然而,AccessViolationException
帶來了獨特的挑戰,特別是當 Visual Studio 偵錯器繞過 catch
區塊時。
在 .NET 4.0 中,AccessViolationException
屬於損壞狀態異常 (CSE) 類別。這些異常表示進程狀態受到損害,通常無法被標準託管程式碼捕獲。
有幾種方法可以解決這個問題:
目標 .NET 3.5: 重新編譯 .NET 3.5 應用程式並在 .NET 4.0 環境中執行它。
App.config 修改: 將下列項目新增至應用程式的設定檔 (app.config
):
<code class="language-xml"> <legacyCorruptedStateExceptionsPolicy enabled="true" /></code>
HandleProcessCorruptedStateExceptions
屬性: 使用 HandleProcessCorruptedStateExceptions
屬性來標記用於處理 CSE 的方法。 詳細指導請參考:https://www.php.cn/link/76c0df0665c83c5944ae67cae2739f7e(注意:此連結可能已過時。在目前的Microsoft 文件網站上搜尋「HandleProcessCorruptedStateStateState)」以取得更新資訊。
正如 Microsoft CLR 團隊的 Gaurav Khanna 所指出的,無法捕獲 .NET 4.0 中的某些異常是故意的。 這些異常表示進程狀態受到嚴重損害。 選擇適當的處理技術取決於您的應用程式的需求和風險承受能力。 在嘗試捕捉 CSE 之前,請仔細考慮其影響。
以上是我如何有效地處理.NET應用程序中的AccessViolationException?的詳細內容。更多資訊請關注PHP中文網其他相關文章!