Esperaba implementar un único "ExceptionController" para manejar las excepciones que se ejecutan en la ejecución de los métodos de mis otros controladores. No había especificado ningún HandlerExceptionResolver en el contexto de mi aplicación, así que de acuerdo con el API documentation debería iniciarse AnnotationMethodHandlerExceptionResolver. Lo verifiqué como tal en la fuente. Entonces, ¿por qué no funciona lo siguiente?Problemas de implementación del controlador de excepción de Spring 3
@Controller
public class ExceptionController {
@ExceptionHandler(NullPointerException.class)
public ModelAndView handleNullPointerException(NullPointerException ex) {
// Do some stuff
log.error(logging stuff)
return myModelAndView;
}
}
@Controller
public class AnotherController {
@RequestMapping(value="/nullpointerpath")
public String throwNullPointer() {
throw new NullPointerException();
}
}
que veo en los registros de depuración que los tres controladores de excepciones por defecto se les pide para el manejo de la excepción, pero no se hace nada y veo "DispatcherServlet - No se pudo completar la solicitud". Seguido por el usuario que se muestra stacktrace y un error interno de 500.
Ese parecía ser el problema. – predhme
@predhme, ¿eso realmente solucionó tu problema? Tengo un ejemplo como el tuyo, y el método @ExceptionHandler solo se invoca cuando se lanza la excepción desde el mismo controlador. – curthipster
Lo noté más adelante también. Supongo que lo más importante fue configurar las páginas 500 y 404 para que, si hubiera algo que no captara, al usuario no se le presentara un seguimiento de la pila. – predhme