Исключения в ASP.MVC - PullRequest
2 голосов
/ 26 мая 2010

Я снова здесь с другим вопросом о MVC.

Вот сделка. У меня есть простая таблица / класс с идентификатором и именем. Имена, предположительно уникальные, и смоделированы в БД.

Я создал свой контроллер, и все просто отлично работает. Но если я пытаюсь вставить имя, которое уже существует, должно быть сгенерировано исключение. Я просто не могу найти, что является правильным видом исключения, и это пространство имен. Ошибка должна исходить из БД, поэтому ...

Есть идеи?

Спасибо

1 Ответ

2 голосов
/ 26 мая 2010

Просто объявите свой собственный класс исключений.

public class DuplicateNameException : Exception {}

Возможно, вы захотите добавить несколько конструкторов, чтобы убедиться, что сообщение настроено соответствующим образом, но это не должно быть намного сложнее.

Обновлено после пояснения из OP : Таким образом, БД выдает исключение, и вы просто хотите сделать более понятным, в чем проблема. В этом случае я предлагаю вам сохранить исключение для БД как InnerException и отбросить что-нибудь получше. Итак, объявите DuplicateNameException примерно так:

public class DuplicateNameException : Exception
{
    public DuplicateNameException(DBException ex)
        : base("Duplicate name!", ex)
    {}
}

Тогда, где вам нужно выполнить операции с БД:

try
{
    DoDatabaseOperation();
}
catch (DBException ex)
{
    if (IsDuplicateNameException(ex))
    {
        throw new DuplicateNameException(ex);
    }
    else
    {
        throw; // use the no-argument form of "throw" to ensure you don't break the stack trace!
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...