Speravo di implementare un singolo "ExceptionController" per gestire le eccezioni generate nell'esecuzione dei metodi dei miei altri controller. Non avevo specificato alcun HandlerExceptionResolver nel mio contesto applicativo, quindi in base allo API documentation è necessario avviare AnnotationMethodHandlerExceptionResolver. L'ho verificato come tale nella fonte. Quindi perché il seguente lavoro non funziona?Problemi di implementazione del gestore di eccezioni del controller 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();
}
}
vedo nei registri di debug che i tre gestori di eccezioni predefinite sono chiesto per la movimentazione di eccezione, ma non si fa nulla e vedo "DispatcherServlet - non poteva completa richiesta". Seguito dall'utente che viene visualizzato lo stacktrace e un errore interno 500.
Questo sembrava essere il problema. – predhme
@predhme, ha davvero risolto il tuo problema? Ho un esempio proprio come il tuo, e il metodo @ExceptionHandler viene invocato solo quando l'eccezione viene lanciata dallo stesso controller. – curthipster
L'ho notato anche in seguito. Immagino che la cosa più importante fosse che io avessi impostato una pagina da 500 e 404 in modo che se non ci fosse qualcosa che non ho catturato, l'utente non è stato presentato con una traccia di stack. – predhme