Possiedo un controller MVC Spring con alcune semplici richieste di servizio REST. Vorrei aggiungere un po 'di gestione degli errori quando vengono lanciate eccezioni specifiche dai miei servizi, ma non riesco a ottenere un metodo di gestione annotato con @ExceptionHandler per essere mai chiamato. Ecco un servizio sto deliberatamente lanciando un'eccezione per cercare di ottenere il mio metodo gestore di prendere in consegna. Il metodo del gestore non viene mai richiamato e Spring restituisce appena un errore 500 al client chiamante. Hai qualche idea su cosa sto facendo male?Spring MVC Metodo @ExceptionHandler nel controller mai richiamato
@ExceptionHandler(IOException.class)
public ModelAndView handleIOException(IOException ex, HttpServletRequest request, HttpServletResponse response) {
response.sendError(HttpServletResponse.SC_FORBIDDEN);
System.out.println("It worked!");
return new ModelAndView();
}
@RequestMapping(value = "/json/remove-service/{id}", method = RequestMethod.DELETE)
public void remove(@PathVariable("id") Long id) throws IOException {
throw new IOException("The handler should take over from here!");
}
'AnnotationMethodHandlerExceptionResolver' è ora deprecato, quindi questo non aiuta nelle versioni più recenti di Spring. –
Utilizzando questo bean con la proprietà 'p: order' impostata sulla massima priorità (1) gestita per risolvere il mio problema. – Alex
@MattFriedman Sostituendo semplicemente 'AnnotationMethodHandlerExceptionResolver' con' org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver' ha funzionato per me –