Tôi có bộ điều khiển MVC Spring với một số yêu cầu dịch vụ REST đơn giản. Tôi muốn thêm một số lỗi xử lý khi ngoại lệ cụ thể được ném từ các dịch vụ của tôi, nhưng tôi không thể có được một phương thức xử lý được chú thích bằng @ExceptionHandler để thực sự được gọi. Đây là một dịch vụ tôi cố ý ném một ngoại lệ để thử và nhận phương pháp xử lý của tôi để tiếp quản. Phương thức xử lý không bao giờ được gọi và Spring chỉ trả về lỗi 500 cho trình khách gọi. Bạn có bất kỳ ý tưởng về những gì tôi đang làm sai?Phương pháp Spring MVC @ExceptionHandler trong bộ điều khiển không bao giờ được gọi
@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' hiện không được chấp nhận nên điều này không giúp ích trong các phiên bản Spring mới hơn. –
Sử dụng bean này với thuộc tính 'p: order' được đặt ở mức ưu tiên cao nhất (1) được quản lý để khắc phục sự cố của tôi. – Alex
@MattFriedman Chỉ cần thay thế 'AnnotationMethodHandlerExceptionResolver' bằng 'org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver' đã làm việc cho tôi –