类文件内异常消息的本地化
本文关键字:本地化 消息 异常 文件 | 更新日期: 2023-09-27 18:17:21
如果一个类文件包含一些初始验证,并且在验证失败的情况下抛出一个Exception
,
-
在
Exception Message
的类文件中启用本地化是否被认为是好的做法? -
如何捕获这些局部异常?简单的字符串比较
Exception Message
似乎…至少可以说不优雅。是否有更好的方法来解决这个问题?
我是如何计划的一个例子:
private ResourceManager localization;
private string email;
public string Email
{
get { return email; }
set
{
if (value.Length > 50)
throw new ArgumentException(localization.GetString("toolong_email"));
else if (!IsValidEmail(value))
throw new ArgumentException(localization.GetString("invalid_email"));
else
email = value;
}
}
微软处理异常的最佳实践声明:"在每个异常中包含本地化的描述字符串。"
我把它标记为c#,但我想最后这更多的是关于一般实践的。我在想,这可能更像是一个程序员。Stackexchange 问题,但决定在这里发布。不确定。
您可以遵循System.Net.WebException
设计并传递一个易于从代码中处理的错误类型(就像使用上述异常类的Status
属性一样)。异常消息本身可以被本地化(就像任何其他使用资源而不是硬编码字符串的CLR异常一样,据我所知)。
if (value.Length > 50)
{
throw new ValueLengthExceededException("Email",
localization.GetString("toolong_email"));
}
else if (!IsValidEmail(value))
{
/*
Or a generic "InvalidFormatException/FormatException" with
member name like a previous example.
*/
throw new InvalidEmailException(localization.GetString("invalid_email"));
}