﻿# 如何強迫 .Net 應用程式輸出英文的例外訊息

因為常常需要跟國外 Blogger 交流，甚至回報某些國外 .Net 產品的 Bug 給他們，所以常常都要自行翻譯「例外訊息」( Exception Message )，不過有時後真的會翻錯。再者，若在開發 .Net 時遇到一些很少見的問題，用中文搜尋不到時，可能會想將訊息翻成英文後再搜尋一次，不過也有可能因為翻譯錯誤導致搜尋結果不夠精準。所以若能夠在除錯的時候輸出英文版的例外訊息，那該有多好阿！

我昨天自己嘗試看可不可以修改輸出的訊息，不過我試著用以下程式碼看可否強迫輸出英文訊息：

```
System.Threading.Thread.CurrentThread.CurrentCulture =
                    new System.Globalization.CultureInfo("en-US");
```

不過卻沒有任何反應，最後我到[微軟技術社群討論區](https://learn.microsoft.com/en-us/answers/)的[Visual C#](https://web.archive.org/web/20081227073631/http://forums.microsoft.com:80/MSDN-CHT/ShowForum.aspx?ForumID=233&SiteID=14)找到了答案，感謝[瓶水相逢.Net](http://www.dotblogs.com.tw/chhuang/)的 chhuang 提供這個線索。原來除了要設定 [System.Threading.Thread.CurrentThread.CurrentCulture](http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo.currentculture\(VS.80\).aspx) 之外，還必須設定 [System.Threading.Thread.CurrentThread.CurrentUICulture](http://msdn.microsoft.com/zh-tw/library/system.globalization.cultureinfo.currentuiculture\(VS.80\).aspx) 才能夠真的將例外訊息全部改變成英文版。

```
System.Threading.Thread.CurrentThread.CurrentCulture = 
    new System.Globalization.CultureInfo("en-US");
System.Threading.Thread.CurrentThread.CurrentUICulture = 
    new System.Globalization.CultureInfo("en-US");
```

除了可以用在 Console Program 外，同樣的程式碼一樣也可以運用在 ASP.NET、Windows Form 或任何其他 .Net 應用程式中喔！
