Ich hatte gehofft, einen einzelnen "ExceptionController" zu implementieren, um Ausnahmen zu behandeln, die in der Ausführung der Methoden meiner anderen Controller ausgelöst werden. Ich habe in meinem Anwendungskontext keinen HandlerExceptionResolver angegeben, daher sollte der AnnotationMethodHandlerExceptionResolver gemäß der API documentation gestartet werden. Ich habe es als solches in der Quelle verifiziert. Warum funktioniert das nicht?Spring 3 Controller Exception Handler Implementierungsprobleme
@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();
}
}
Ich sehe in den Debug-Protokolle, die die drei Standard-Exception-Handler für den Umgang mit der Ausnahme gefragt werden, aber nichts getan wird, und ich sehe „DispatcherServlet - Anfrage konnte nicht abgeschlossen“. Gefolgt von dem Benutzer wird der Stacktrace und ein 500 Interner Fehler angezeigt.
Das schien das Problem zu sein. – predhme
@predhme, hat das dein Problem wirklich behoben? Ich habe ein Beispiel genau wie Ihres, und die @ExceptionHandler-Methode wird nur aufgerufen, wenn die Ausnahme vom selben Controller ausgelöst wird. – curthipster
Das habe ich später auch bemerkt. Ich denke, das Wichtigste war für mich, 500 und 404 Seiten einzurichten, so dass, wenn es etwas gab, das ich nicht erwischte, dem Benutzer keine Stack-Trace angezeigt wurde. – predhme