Spring Boot 默认异常自动映射到 http 状态代码

Spring Boot default exceptions automatically mapped to a http status code

提问人:Shakib hasan 提问时间:8/17/2023 最后编辑:Shakib hasan 更新时间:8/17/2023 访问量:70

问:

在我的 Spring Boot rest api 应用程序中,我想为未经处理的异常定义一个自动方法。假设客户端在登录端点中提供了错误的密码。响应是 403 禁止,没有任何消息,但我想给出一些消息作为响应,并希望为这种相同格式的消息提供所有未处理的异常。 我试试这个:

    @ResponseStatus
    @ControllerAdvice
    public class RestErrorResponse extends ResponseEntityExceptionHandler {
   
        @ExceptionHandler(Exception.class)
        public ResponseEntity<ErrorMessage> handleServerError(Exception exception){
            ErrorMessage message = new ErrorMessage(
                    "Failed",
                    exception.getMessage(),
                    400
            );
            return ResponseEntity.status(400).body(message);
        }
    }

ErrorMessage 类

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ErrorMessage {
    private String status;
    private String message;
    private Integer statusCode;
}

这是工作。但问题是我需要定义代码本身。这里的代码是 400.但我不知道发生了哪个异常。无论如何,我每天都需要状态代码。 在stackoverflow中找到答案,我也在下面的代码中尝试

 @ResponseStatus
        @ControllerAdvice
        public class RestErrorResponse extends ResponseEntityExceptionHandler {
       
            @ExceptionHandler(Exception.class)
            public ResponseEntity<ErrorMessage> handleServerError(Exception exception,HttpServletResponse response){
                ErrorMessage message = new ErrorMessage(
                        "Failed",
                        exception.getMessage(),
                        response.getStatus()
                );
                return ResponseEntity.status(response.getStatus()).body(message);
            }
        }

但总是返回 200。response.getStatus()

Spring-Boot REST 异常 http-status-codes

评论

0赞 ILya Cyclone 8/18/2023
您可以使用注释在单独的方法中处理特定异常。@ExceptionHandler(MyException.class)
0赞 Shakib hasan 8/18/2023
你不明白我的意思吗?我想要所有未经处理的异常的 daynamic 异常处理程序,以便我可以向客户端发送相同格式的消息

答: 暂无答案