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

JiB*_*evé 8 c# exception

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

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

如果我抛出异常,我应该在ctor中翻译消息吗?

throw new MyException("Error message", Resource.MyException_TranslatedMessage);
Run Code Online (Sandbox Code Playgroud)

或者我抛出异常并使用自制帮助程序,它将使用View逻辑中的异常类型找到错误消息?

try
{
    //...
}
catch(Exception ex)
{
    myLabel.Text = new ExceptionTranslator(ex).Translate();
}
Run Code Online (Sandbox Code Playgroud)

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

总之一句:处理异常消息翻译的好方法是什么?

Ste*_*ven 13

大多数例外是出于技术目的,除非您的操作和维护人员也位于不同的国家/地区,这些例外情况应该只是使用编写和维护应用程序的人员的语言来发送消息.

.NET框架包含本地化的异常消息.对于我作为开发人员来说,这非常烦人,因为我的本地语言(荷兰语)中的异常消息与原始英语异常消息的含义不同.但是,微软本地化这些框架异常消息似乎是合理的,因为它们的目标受众可以位于任何地方.

但是,显式抛出某些类型的异常以显示给用户.这些是你的ValidationExceptionBusinessLayerException.他们明确的合同将显示给用户.当然,您应该本地化这些异常消息,但是在抛出异常时,通常更好,更容易从本地化资源中提取异常消息:

throw new ValidationException(Resources.InvalidUserName);
Run Code Online (Sandbox Code Playgroud)