РЕДАКТИРОВАТЬ: Этот подход имеет смысл для меня.Если вы знаете, что в вашем приложении / БД будет определенная ошибка, и это поможет вам или вашим пользователям иметь определенный тип пользовательского исключения, который быстро идентифицирует то, что в противном случае было бы несколько сложным или специфическим сценарием, тогда абсолютно да.Рекомендуется использовать как исключение тип , так и исключение сообщение , чтобы ошибка была максимально понятной.Мой код, приведенный ниже, является еще более простым примером, чем тот, в который вы, похоже, углубляетесь.Вместо того, чтобы позволить другому коду закончиться нулевым ссылочным исключением или каким-либо другим следствием, я бью все до конца с помощью throw new DatabaseDataNotFoundException("Cannot find ServerAppConfiguration value for {0}", key);
.
Просто создайте свой собственный класс исключений, который наследует от Exception, вот пользовательское исключение Iиспользуйте именно для этой цели:
public class DatabaseDataNotFoundException : Exception
{
public DatabaseDataNotFoundException() : base() { }
public DatabaseDataNotFoundException(string message) : base(message) { }
public DatabaseDataNotFoundException(string message, params object[] args)
: base(String.Format(CultureInfo.CurrentCulture, message, args)) { }
public DatabaseDataNotFoundException(string message, Exception inner)
: base(message, inner) { }
public DatabaseDataNotFoundException(string message, Exception inner, params object[] args)
: base(String.Format(CultureInfo.CurrentCulture, message, args), inner) { }
protected DatabaseDataNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) { }
}
Тогда ваш код станет:
if (e.InnerException.InnerException.Message.Contains("UNIQUE KEY"))
{
throw new DatabaseDataNotFoundException("message");
}