Ich habe einen Spring MVC-Controller mit einigen einfachen REST-Serviceanforderungen. Ich möchte eine Fehlerbehandlung hinzufügen, wenn bestimmte Ausnahmen von meinen Diensten ausgelöst werden, aber ich kann keine mit @ExceptionHandler annotierte Handler-Methode erhalten, um tatsächlich jemals aufgerufen zu werden. Hier ist ein Service, den ich absichtlich eine Ausnahme ausspreche, um zu versuchen, meine Handlermethode zu übernehmen, um zu übernehmen. Die Handler-Methode wird nie aufgerufen, und Spring gibt nur einen 500-Fehler an den aufrufenden Client zurück. Hast du irgendwelche Ideen, was ich falsch mache?Spring MVC @ ExceptionHandler-Methode im Controller nie aufgerufen wird
@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' ist jetzt veraltet, dies hilft in neueren Versionen von Spring nicht. –
Die Verwendung dieser Bean mit der Eigenschaft 'p: order', die auf die höchste Priorität (1) gesetzt wurde, hat mein Problem behoben. – Alex
@MattFriedman Ersetzen Sie einfach 'AnnotationMethodHandlerExceptionResolver' durch' org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver' arbeitete für mich –