В документе Лучшие практики для исключений в MSDN говорится, что в вашем классе можно использовать метод построителя исключений, если одно и то же исключение будет использоваться во многих частях класса. Но также говорится, что в некоторых случаях лучше использовать конструктор исключения.
Допустим, у меня есть следующий код в классе UserData
:
private MailAddress _addr;
public UserData(string emailAddress)
{
// Tries to validate the e-mail address
try
{
_addr = new MailAddress(emailAddress);
}
catch
{
throw new ArgumentException(nameof(emailAddress), "Invalid email address.");
}
if (_addr.Address != emailAddress)
{
throw new ArgumentException(nameof(emailAddress), "Invalid email address.");
}
}
Вы можете видеть что в обоих операторах throw
я выкидываю одно и то же исключение.
Вопрос: правильно ли добавить метод построителя исключений, чтобы получить мое исключение и выдать его? Получу ли я правильную трассировку стека и тому подобное, если я это сделаю? И если нет, то как определить между создателями исключений и конструкторами?