提问人:Shakib hasan 提问时间:8/17/2023 最后编辑:Shakib hasan 更新时间:8/17/2023 访问量:70
Spring Boot 默认异常自动映射到 http 状态代码
Spring Boot default exceptions automatically mapped to a http status code
问:
在我的 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()
答: 暂无答案
评论
@ExceptionHandler(MyException.class)