第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

英文異常消息?

英文異常消息?

繁星淼淼 2019-07-25 20:08:10
英文異常消息?我們通過將Exception.Message寫入文件來記錄系統(tǒng)中發(fā)生的任何異常。但是,它們是在客戶的文化中寫成的。而土耳其的錯誤對我來說意義不大。那么如何在不改變用戶文化的情況下用英語記錄任何錯誤消息呢?
查看完整描述

3 回答

?
ibeautiful

TA貢獻1993條經(jīng)驗 獲得超6個贊

這個問題可以部分解決。Framework異常代碼根據(jù)當(dāng)前線程區(qū)域設(shè)置從其資源加載錯誤消息。在某些例外情況下,這會在訪問Message屬性時發(fā)生。

對于這些例外情況,您可以通過在記錄時將線程區(qū)域設(shè)置簡單地切換到en-US來獲取完整的美國英語版本的消息(事先保存原始用戶區(qū)域設(shè)置并在之后立即恢復(fù))。

在單獨的線程上執(zhí)行此操作甚至更好:這可確保不會產(chǎn)生任何副作用。例如:

try{
  System.IO.StreamReader sr=new System.IO.StreamReader(@"c:\does-not-exist");}catch(Exception ex){
  Console.WriteLine(ex.ToString()); //Will display localized message
  ExceptionLogger el = new ExceptionLogger(ex);
  System.Threading.Thread t = new System.Threading.Thread(el.DoLog);
  t.CurrentUICulture = new System.Globalization.CultureInfo("en-US");
  t.Start();}

ExceptionLogger類看起來像:

class ExceptionLogger{
  Exception _ex;

  public ExceptionLogger(Exception ex)
  {
    _ex = ex;
  }

  public void DoLog()
  {
    Console.WriteLine(_ex.ToString()); //Will display en-US message
  }}

但是,正如Joe在對此回復(fù)的早期修訂版的評論中正確指出的那樣,在拋出異常時已經(jīng)(部分)從語言資源加載了一些消息。

例如,這適用于拋出ArgumentNullException(“foo”)異常時生成的消息的'parameter not not null'部分。在這些情況下,即使使用上述代碼,消息仍將顯示(部分)本地化。

除了使用不切實際的黑客之外,例如在開始使用en-US語言環(huán)境的線程上運行所有非UI代碼,似乎沒有太多可以做的事情:.NET Framework異常代碼沒有用于覆蓋錯誤消息區(qū)域設(shè)置的工具。


查看完整回答
反對 回復(fù) 2019-07-25
?
藍山帝景

TA貢獻1843條經(jīng)驗 獲得超7個贊

也許是一個有爭議的觀點,但en-US您可以將其設(shè)置為,而不是將文化設(shè)置為Invariant。在Invariant文化中,錯誤消息是英文的。

Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture;

它具有不偏見的優(yōu)點,特別是對于非美國英語區(qū)域。(又避免同事的諷刺言論)


查看完整回答
反對 回復(fù) 2019-07-25
  • 3 回答
  • 0 關(guān)注
  • 623 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號