確保 .NET 應用程式中英文異常登入的一致性
處理以不同客戶端語言(例如土耳其語)記錄的異常訊息可能會使偵錯變得複雜。本文詳細介紹如何在 .NET 應用程式中以英語一致地記錄這些訊息。
.NET Framework 的異常處理機制會根據目前執行緒的區域性設定從資源檔案擷取錯誤訊息。 某些異常會在存取 Message
屬性時載入這些訊息。
取得英文訊息的常見方法是在日誌記錄期間暫時將執行緒的區域性切換為「en-US」:
<code class="language-csharp">using System; using System.Globalization; using System.IO; try { StreamReader sr = new StreamReader(@"c:\does-not-exist"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); // Localized message ExceptionLogger el = new ExceptionLogger(ex); Thread t = new Thread(el.DoLog); t.CurrentUICulture = new CultureInfo("en-US"); t.Start(); }</code>
ExceptionLogger
類別處理英文日誌記錄:
<code class="language-csharp">class ExceptionLogger { Exception _ex; public ExceptionLogger(Exception ex) { _ex = ex; } public void DoLog() { Console.WriteLine(_ex.ToString()); // English message } }</code>
需要注意的是,對於某些異常,訊息元件可能會從異常來源的語言資源載入。 即使使用這種技術,這也可能導致部分本地化的消息。
為了實現完全控制,請考慮從應用程式一開始就在配置有「en-US」區域性的執行緒中執行所有非 UI 程式碼。 但是,.NET Framework 不直接支援覆蓋異常訊息的區域設定。
以上是如何在 .NET 應用程式中始終以英文記錄異常訊息?的詳細內容。更多資訊請關注PHP中文網其他相關文章!