Обработка исключений ASP.NET MVC

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


person Carles Company    schedule 13.10.2009    source источник
comment
Это старо, но я просто хотел предоставить свой пост как ref (проблемы с HandleError), проходя мимо - stackoverflow.com/questions/12183653/   -  person Hemant Tank    schedule 10.09.2012


Ответы (1)


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

Для получения дополнительной информации об этом подходе ознакомьтесь с сообщением ScottGu об этом: http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release.-part-1.aspx

person mkchandler    schedule 13.10.2009
comment
Это интересно, но по-другому я могу перенаправить на стандартные представления (например, индекс) и отобразить персонализированное сообщение для конкретного исключения... - person Carles Company; 14.10.2009
comment
Страницы Error.aspx привязаны к классу HandleErrorInfo, который предоставляет свойства исключения. Если вы отправляете персонализированное сообщение об исключении, вы можете отобразить его в представлении. В книге Стива Сандерсона Pro ASP.NET MVC Framework описаны некоторые способы сделать это, а также способы создания собственных фильтров исключений. Я бы порекомендовал взять эту книгу. - person mkchandler; 14.10.2009
comment
Может быть, расширить HandleError, чтобы разрешить определение TempData? Думаю, я расследую это. Спасибо... - person Carles Company; 14.10.2009
comment
Тем не менее, не уверен, что это правильный путь... :P - person Carles Company; 14.10.2009
comment
Мне кажется, вам нужно реализовать свой собственный фильтр исключений. Но прежде чем вы это сделаете, я хотел бы сделать шаг назад и убедиться, что вы не слишком усложняете то, что можно сделать с помощью встроенного фильтра исключений HandleErrorAttribute. - person mkchandler; 14.10.2009