c# - 以英语语言环境显示所有异常

标签 c# locale

我在 main 中使用了一个 try ... catch block 。

当我设置以下内容时

Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-US");
            Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-US");

这会处理所有的异常并用英文打印出来

但这对于内部的许多 API 来说是失败的,尤其是对于像目录访问这样的异常捕获。还有什么需要做的吗?

所以主要的问题是这个Execption

System.Net.Sockets.SocketException (0x80004005):

这之后的消息不会出现在区域设置中

最佳答案

我能够通过使用 Win32 FormatMessage 代码块来做到这一点

[DllImport("Kernel32.dll", SetLastError=true)]
static extern uint FormatMessage( uint dwFlags, IntPtr lpSource, 
   uint dwMessageId, uint dwLanguageId, ref IntPtr lpBuffer, 
   uint nSize, string[] Arguments);

并将 langid 设置为英语!

关于c# - 以英语语言环境显示所有异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12723945/

相关文章:

java - 使用带有阿拉伯数字的阿拉伯字母

ruby-on-rails - 为什么在测试 Rails 3 时不能更改当前语言环境?

c# - 指向另一个指针的指针(间接级别)?

c# - C#中的分号

c# - sql本地数据库的问题

c++ - std::isalpha 在与 boost::locale 一起使用时抛出 bad_cast

visual-studio-2008 - 德语Visual Studio 2008/ASP.NET中的英语错误消息

java - Java 有专门的语言类吗?

c# - `DeploymentItem` 属性是什么意思?

C# 将 CPU 保持在/接近指定的百分比使用率以进行测试