c# - 如何处理异常消息的翻译?

标签 c# exception

我真的不知道在多语言应用程序中处理异常的最佳方法。

我应该在哪里处理错误消息 (Exception.Message) 的翻译?

我是否应该在抛出异常后立即翻译 ctor 中的消息?

throw new MyException("Error message", Resource.MyException_TranslatedMessage);

或者我是否抛出异常并使用自制的帮助器来使用 View 逻辑中的异常类型查找错误消息?

try
{
    //...
}
catch(Exception ex)
{
    myLabel.Text = new ExceptionTranslator(ex).Translate();
}

或者,Microsoft 是否提供了执行此操作的工具或机制?

一句话:处理异常消息翻译有哪些好的做法?

最佳答案

大多数异常(exception)情况都是出于技术目的,除非您的操作和维护人员也位于不同的国家/地区,否则这些异常(exception)情况应该只包含以编写和维护应用程序的人员的语言显示的消息。

.NET 框架包含本地化的异常消息。对于作为开发人员的我来说,这非常烦人,因为以我的本地语言(荷兰语)显示的异常消息并不像原始的英语异常消息那样重要。但是,Microsoft 将这些框架异常消息本地化似乎是合理的,因为它们的目标受众可以位于任何地方。

然而,某些类型的异常会被显式抛出以显示给用户。这些是您的 ValidationExceptionBusinessLayerException。他们明确的契约(Contract)是要展示给用户的。当然,您应该将这些异常消息本地化,但与其翻译它们,不如在抛出异常时从本地化资源中提取异常消息更好、更容易:

throw new ValidationException(Resources.InvalidUserName);

关于c# - 如何处理异常消息的翻译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993946/

相关文章:

c# - 什么时候去对象池?

c# - 如何从以编程方式生成的 SSIS 包中获取已处理的行数到调用应用程序?

java - 未知 "NumberFormatting"问题

c# - 有没有在 XAML 中整合类似的数据绑定(bind)和/或触发器?

c# - Web API 2. 使用相同的 Controller 方法响应所有 HTTP 动词

c# - 编译C#程序时出现 "Invalid Expression Term ' .' "错误

java - 没有发现异常吗?

C++ 处理意外错误

java - java servlet 中的运行时错误

c++ - 捕获 EXCEPTION_GUARD_PAGE 是否安全