0

如果一个类文件包含一些初始验证并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;
    }
}

Microsoft处理异常的最佳实践指出:“在每个异常中包含本地化描述字符串。”

我已经标记了这个 C#,但最后这更多的是关于一般实践,我想。我在想这可能更像是一个programmers.stackexchange问题,但决定在这里发布。不确定。

4

1 回答 1

1

您可以遵循设计并传递易于从代码中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")); 
    }

希望这可以帮助。

于 2013-06-06T07:55:30.400 回答