No estoy seguro de cuál es la diferencia entre las diferentes formas de HandleError.Necesito más información sobre HandleError
En el asp.net mvc (proyecto por defecto) que ponen esto en la parte superior de la clase
[HandleError]
Así que estaba leyendo algún blog y la persona dice que esto
". ... le dice al marco que si ocurre una excepción no controlada en su controlador que en lugar de mostrar la Pantalla amarilla de la Muerte predeterminada, debería mostrar una vista llamada Error ".
http://blog.dantup.me.uk/2009/04/aspnet-mvc-handleerror-attribute-custom.html
lo hace significa que no debería estar alcanzando los errores (es decir, no hay capturas try)?
que entonces estaba buscando en un libro y tienen
[HandleError(ExceptionType=typeof(InsufficientMemoryException),View="About")]
public ActionResult HandleError()
{
throw new
InsufficientMemoryException();
return View("Home");
}
Así que sólo hay que poner en la parte superior de esta ActionResult y le dan un tipo de excepción. Mi primera pregunta es ¿qué sucede si tienes más de un error que estás lanzando? También pensé que deberías manejar todos los errores. Sé que esto es sólo un pequeño ejemplo, pero ¿no deberías atrapar MemoryException en alguna parte o esto arruina "HandleError" si lo haces?
También noté cuando lo miraba en VS que HandleError tiene 2 métodos de sobrecarga. Uno de ellos es el anterior y el otro es HandError().
Entonces, ¿por qué en el archivo de muestra asp.net MVC solo [HandleError] y no [HandleError()]? ¿Se usa uno para métodos de acción y uno para los de clase? Supongo que HandleError en la parte superior de la clase sería como HandleError (typeof (Exception))?
y Por último hay algo llamado IExceptionFilter. Entonces, ¿usar esto si quiere registrar todas las excepciones o si tiene algunas excepciones especiales con las que desea hacer algo diferente?
Me gusta si solo quisiera registrar todas las excepciones, sin importar qué haría solo una de estas y eso es todo, pero si quisiera hacer algo especial en una excepción de NullReference, ¿haría otra?
Estaba viendo este tutorial http://dimecasts.net/Casts/CastDetails/37 y no veo este "ActionFilterAttribute" del que están hablando. ¿Esto es de una versión anterior o algo así?
Como parece, tiene 4 métodos que puede usar y debe anularlos. En mi libro sólo se habla de ellos:
- IAuthorizationFilter
- IActionFilter
- IResultFilter
- IExceptionFilter
y son todas las interfaces así que no hay primordial. Sin embargo, ninguno de ellos tiene 4 métodos. Sólo una o 2.
Gracias
Ah, una cosa más. ¿Deberías probar siempre para cada excepción?Al igual que uno de mis métodos puede encontrar 7 excepciones diferentes. ¿Debería probar las 7 excepciones (es decir, arrojarlas) y eventualmente atraparlas y manejarlas (normalmente solo imprimo algún mensaje).
Si es así, VS2008 tiene algo que encuentra las excepciones que pueden suceder. Encuentro difícil decir a veces qué puede arrojar una excepción, entonces tengo que buscar cuáles.
¿El error de Hmm so Handle es si usted quiere una página genérica para todos los errores? Si quieres errores más específicos, entonces póngalo sobre el actionView? ¿Qué tal "IExceptionFilter" cuando usaría este? ¿Sería aquí donde sería mi material de registro (o el código de Elmah)? Además, todavía no estoy seguro de cómo se ve el código? ¿No manejo los errores (try/catch) o todavía los manejo? No estoy seguro si los manejaría si eso confunde [HandleError]. Además, si los manejo no ¿eso impedirá que ELMAH framework haga cosas en las excepciones manejadas? ¿Tendría que registrar los conocidos manualmente? – chobo2