2009-10-13 35 views
18

¿Está bien capturar mis excepciones en las acciones del controlador? ¿Hay alguna forma mejor de hacerlo? De hecho, estoy detectando mis excepciones en el controlador y usando TempData para mostrar un mensaje al usuario, pero tengo una sensación extraña sobre este enfoque. He estado navegando pero no he encontrado nada que me satisfaga.ASP.NET MVC manejo de excepciones

+0

Esto es viejo, pero yo sólo quería proporcionar mi publicación como ref (** problemas con HandleError **) mientras pasa por - http://stackoverflow.com/questions/12183653/mvc-handleerror-filter-didnt-catch-an-exception –

Respuesta

11

Puede utilizar el atributo HandleError en la clase de controlador para detectar excepciones no controladas y devolverá automáticamente la vista Error.aspx en la carpeta Shared. Hay sobrecargas para este atributo lo que sólo puede que se use para ciertos tipos de excepción, etc.

Para más información sobre este enfoque, echa un vistazo a el post de ScottGu al respecto: http://weblogs.asp.net/scottgu/archive/2008/07/14/asp-net-mvc-preview-4-release-part-1.aspx

+0

Esto es interesante, pero el de otra manera, puedo redireccionar a las vistas estándar ("Índice", por ejemplo) y mostrar un mensaje personalizado para la excepción concreta ... –

+0

Las páginas Error.aspx están vinculadas a la clase HandleErrorInfo, que expone las propiedades de la excepción. Si está enviando un Mensaje de excepción personalizado, puede mostrarlo en la vista. El libro de Steve Sanderson "Pro ASP.NET MVC Framework" cubre algunas formas de hacerlo, y también cómo crear sus propios filtros de excepción. Yo recomendaría recoger ese libro. – mkchandler

+0

¿Quizás extienda el HandleError para permitir la definición de TempData? Creo que investigaré esto. Gracias ... –