我真的不知道在多语言应用程序中处理异常的最佳方法。
我应该在哪里处理错误消息 (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 将这些框架异常消息本地化似乎是合理的,因为它们的目标受众可以位于任何地方。
然而,某些类型的异常会被显式抛出以显示给用户。这些是您的 ValidationException
或 BusinessLayerException
。他们明确的契约(Contract)是要展示给用户的。当然,您应该将这些异常消息本地化,但与其翻译它们,不如在抛出异常时从本地化资源中提取异常消息更好、更容易:
throw new ValidationException(Resources.InvalidUserName);
关于c# - 如何处理异常消息的翻译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17993946/