本指南示範如何有效管理 .NET 控制台應用程式中未處理的例外狀況。 與 GUI 或 Web 應用程式不同,控制台應用程式需要使用 AppDomain.CurrentDomain
物件的稍微不同的方法。
將事件處理程序附加到 UnhandledException
事件的常用方法(如下所示)在控制台應用程式中經常失敗:
<code class="language-csharp">AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.UnhandledException += new UnhandledExceptionEventHandler(MyExceptionHandler);</code>
這是因為 AppDomain
無法立即可用。 解決方案是使用 C# 中的 =
運算子直接附加處理程序:
<code class="language-csharp">AppDomain.CurrentDomain.UnhandledException += MyExceptionHandler;</code>
這可確保處理程序正確註冊。 這是一個演示異常捕獲的範例:
<code class="language-csharp">static void Main(string[] args) { AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper; throw new Exception("Application Error!"); } static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) { Console.WriteLine(e.ExceptionObject.ToString()); Console.WriteLine("An unexpected error occurred. Press Enter to exit."); Console.ReadLine(); Environment.Exit(1); }</code>
此程式碼註冊 UnhandledExceptionTrapper
方法。當發生未處理的異常時,此方法會記錄異常詳細資訊並允許使用者在應用程式終止之前確認錯誤。
重要提示:此方法不會捕捉 JIT 編譯期間引發的異常(例如類型載入或檔案載入錯誤)。為了解決這些問題,請採用「延遲抖動」策略。 這涉及在單獨的方法中隔離潛在有問題的程式碼並使用 [MethodImpl(MethodImplOptions.NoInlining)]
屬性對其進行修飾。
以上是如何有效處理.NET控制台應用程式中未處理的例外狀況?的詳細內容。更多資訊請關注PHP中文網其他相關文章!