ResponseEntityExceptionHandler

ResponseEntityExceptionHandler

我正在尝试使用@ExceptionHandler(Exception.class)处理所有类型的异常。但这并不能处理所有类型的异常。

当我尝试从 postman /浏览器访问错误的HTTP方法时,我没有收到任何响应空白页。

能否请任何人告诉我为什么我没有得到任何答复,或者告诉我我在代码中做错了什么?

    @Order(Ordered.HIGHEST_PRECEDENCE)
    @ControllerAdvice
    public class RestExceptionHandler extends ResponseEntityExceptionHandler {


        @ExceptionHandler(Exception.class)
        public ResponseEntity<ExceptionMessage> handleAllExceptionMethod(Exception ex,WebRequest requset,HttpServletResponse res) {


            ExceptionMessage exceptionMessageObj = new ExceptionMessage();

            exceptionMessageObj.setStatus(res.getStatus());
            exceptionMessageObj.setError(ex.getLocalizedMessage());
            exceptionMessageObj.setException(ex.getClass().getCanonicalName());
            exceptionMessageObj.setPath(((ServletWebRequest) requset).getRequest().getServletPath());

            return new ResponseEntity<ExceptionMessage>(exceptionMessageObj, new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);
        }

最佳答案

覆盖ResponseEntityExceptionHandler#handleExceptionInternal()或不扩展ResponseEntityExceptionHandler

在按照this answer调用@Order(Ordered.HIGHEST_PRECEDENCE)之前,应在@ControllerAdvice上使用ResponseEntityExceptionHandler,这表明需要Spring Framework 4.3.7。

08-04 04:43