В ASP.NET MVC следует ли использовать OnException для исключений приложений? - PullRequest
4 голосов
/ 15 июля 2009

Я создаю небольшое приложение в ASP.NET MVC. Я все еще пытаюсь найти решение некоторых проблем с дизайном, с которыми я сталкиваюсь.

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

Проблема в том, что дальше? Я могу либо проверить исключение в контроллере, и перенаправить в другое представление, но, похоже, во многих действиях во многих контроллерах создается много одинакового шаблона.

Или я могу просто избежать проверки исключения и переопределить метод OnException контроллера (или некоторого базового класса контроллера, который я буду использовать) для его устранения. Это избавит меня от беспорядка.

Из примеров, которые я нашел, я вижу, как HandleError и OnException могут использоваться для регистрации необработанных исключений (что хорошо) и перенаправления на «извините!» страницу, но мне хотелось бы узнать ваше мнение об использовании механизма на менее «непредвиденных» исключениях.

1 Ответ

3 голосов
/ 15 июля 2009

Вы должны проверить атрибут HandleError. Вы можете указать, какое представление должно отображаться для какого исключения. ASP.NET MVC HandleError Это специфично для MVC и кажется мне гораздо «чище», чем использование события.

В дополнение к HandleError, я использую ELMAH, чтобы ловить и записывать исключения.

Лично я пытаюсь добраться до точки, где все сгенерированные исключения перехватываются на уровне контроллера и не выходят за рамки этого. Тем не менее, [handleerror] делает именно это - ловит ошибки и отображает соответствующую красивую страницу для пользователя.

Редактировать: Также обратите внимание, что вы можете указать это на своем контроллере, а не только в действии.

Джеймс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...