cuốn sách gpt4 ai đã làm

java - @ControllerAdvice 异常处理与@ResponseStatus 一起

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:53:15 27 4
mua khóa gpt4 Nike

tôi có @ControllerAdvice Lớp xử lý một tập hợp các ngoại lệ. Chúng tôi cũng có một số trường hợp ngoại lệ khác, được viết bằng @ResponseStatus Bình luận để bình luận. Để kết hợp hai phương pháp này, chúng tôi sử dụng kỹ thuật được mô tả trong bài đăng trên blog:http://spring.io/blog/2013/11/01/Exception-handling-in-spring-mvc , tức là tại Bộ điều khiểnLời khuyên , ta xử lý tổng quát như sau Exception:

    @ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) ném ngoại lệ {
// Nếu ngoại lệ được chú thích bằng @ResponseStatus, hãy thử lại và để
// framework xử lý nó - như ví dụ OrderNotFoundException
// ở đầu bài viết này.
// AnnotationUtils là một lớp tiện ích của Spring Framework.
if (AnnotationUtils.findAnnotation(e.getClass(), ResponseStatus.class) != null)
throw e;

// Ngược lại, hãy thiết lập và gửi người dùng đến chế độ xem lỗi mặc định.
ModelAndView mav = new ModelAndView();
mav.addObject("ngoại lệ", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName(DEFAULT_ERROR_VIEW);
return mav;
}

Tuy nhiên, nó hoạt động như một bùa mê, việc sử dụng kỹ thuật này sẽ dẫn đến lỗi với văn bản sau trong nhật ký ứng dụng:

11/06/2014 15:51:32.907 LỖI oswsmmaExceptionHandlerExceptionResolver - Không thể gọi phương thức @ExceptionHandler: ...

Điều này được gây ra bởi đoạn mã này trong ExceptionHandlerExceptionResolver:

thử {
if (logger.isDebugEnabled()) {
logger.debug("Gọi phương thức @ExceptionHandler: " +ExceptionHandlerMethod);
}
ngoại lệHandlerMethod.invokeAndHandle(webRequest, mavContainer, ngoại lệ);
}
bắt (gọi ngoại lệEx) {
logger.error("Không thể gọi phương thức @ExceptionHandler: " +ExceptionHandlerMethod, invocationEx);
return null;
}

Có ai biết cách kết hợp đúng cách hai phương pháp xử lý ngoại lệ này để tránh lỗi trong nhật ký không?

Cảm ơn, Jane

câu trả lời hay nhất

Đây là một câu hỏi cũ nhưng tôi mới gặp nó hôm nay và tìm ra giải pháp tốt hơn là vô hiệu hóa ExceptionHandlerExceptionResolver Giải pháp tốt hơn cho việc đăng nhập. Hóa ra vấn đề này có thể được giải quyết bằng cách nâng cấp lên phiên bản mới nhất của Spring framework (4.3.8 phù hợp với tôi). ExceptionHandlerExceptionResolver Đã sửa lỗi để phát hiện xem ngoại lệ ban đầu có bắt đầu từ @ExceptionHandler Ném lại. Trong trường hợp này, ngoại lệ không còn được ghi lại.

Về xử lý ngoại lệ java - @ControllerAdvice cùng với @ResponseStatus, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/24164862/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress