Mam kontroler Spring MVC z kilkoma prostymi żądaniami usługi REST. Chciałbym dodać trochę obsługi błędów, gdy wyjątki są wyrzucane z moich usług, ale nie mogę uzyskać metody obsługi opisanej za pomocą @ExceptionHandler, aby rzeczywiście zostać wywołanym. Oto jedna z usług celowo rzucając wyjątek, aby spróbować przejąć kontrolę nad moją metodą obsługi. Metoda obsługi nigdy nie jest wywoływana, a Spring po prostu zwraca błąd 500 do klienta wywołującego. Czy masz jakieś pomysły na temat tego, co robię źle?Metoda Spring MVC @ ExceptionHandler w kontrolerze nigdy nie jest wywoływana
@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' jest teraz przestarzałe, więc to nie pomaga w nowszych wersjach Spring. –
Użycie tego komponentu z właściwością 'p: order' ustawioną na najwyższy priorytet (1) rozwiązało mój problem. – Alex
@MattFriedman Właśnie zastępuje 'AnnotationMethodHandlerExceptionResolver' z' org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver' pracował dla mnie –