图书馆的英语例外情况

时间:2018-01-31 01:12:30

标签: c# exception culture

我正在使用日语开发一台机器。我正在尝试将例外设置为英语,我找到了this method

它运作良好 - 通过将文化设置为英语我可以用英语而不是本地语言抛出异常。

我的问题是,此设置适用于我正在处理的应用程序,但如果此应用程序调用库并且此库产生异常,则异常将以英语显示吗? (图书馆建立在这个文化系统中,我根本不认为文化会发生变化)

感谢您对此主题的任何评论

1 个答案:

答案 0 :(得分:0)

更改当前文化(How to change CurrentCulture at runtime?可能会影响异常消息,但它也会更改正常的代码行为。考虑这样做仅用于调试。

大多数代码都不会为本地化异常而烦恼,只是将硬编码字符串作为错误消息。较少数量的库将使用可本地化的资源字符串用于所有或仅可能面向用户的异常,但不太可能在许多语言中进行本地化。更小的数字将具有针对所有语言本地化的所有异常(我相信Microsoft已将所有.Net Framework库本地化为所有语言)。

因此,除非您关注的库来自具有本地化异常的较小集合,否则您无法更改异常文本。您通常可以通过编写将当前文化(CurrentCultureCurrentUICulture)设置为您感兴趣的语言并触发特定异常的代码来快速进行实验。或者您可以反编译代码并查看异常消息是否是硬编码的。

我不会改变文化,而是会捕获更具体的异常并编写代码来处理它们,尤其是当库生成向用户显示的信息或处理任何序列化数据时。

警告:更改当前文化将修改所有字符串解析和格式化函数的行为。因此,如果您调用的代码尝试读取或写入任何文档/设置或生成任何UI字符串,我将非常关注改变当前的文化。