gpt4 book ai didi

java - 为什么全局异常处理程序总是返回 200 状态?

转载 作者:行者123 更新时间:2023-12-02 09:34:54 24 4
gpt4 key购买 nike

我创建了一个全局异常处理程序来捕获我的包装业务异常。我想为每个包装的异常返回不同的状态代码和自定义响应。

所以我做了一个全局异常处理程序:

@ControllerAdvice
public class ExportWordProfileExceptionControllerAdvice {

@ExceptionHandler({ExportWordProfileException.class})
public ResponseEntity<ApiError> exportWordProfileException(
ExportWordProfileException ex) {

if (ex.getCause() instanceof ProfileNotFoundException) {
var apiError = new ApiError(HttpStatus.NOT_FOUND, ex.getCause().getMessage());
return new ResponseEntity<>(apiError, HttpStatus.NOT_FOUND);
}

var apiError = new ApiError(HttpStatus.INTERNAL_SERVER_ERROR, ex.getMessage());
return new ResponseEntity<>(apiError, HttpStatus.INTERNAL_SERVER_ERROR);
}

}

当我测试抛出 ExportWordProfileException 的 Controller 时,我总是得到 200 状态码。但我有正确的错误消息:

<200,{"data":{"status":"NOT_FOUND","message":"Le profile avec l'id '8e6d45ca-d08f-48b8-8ed0-ea7ea067cf5e' n'existe pas."}} .....

我该如何解决这个问题?感谢您的阅读。

…………
编辑
…………

这个问题可能是我用 RestTemplate 测试的方式造成的吗?我用 Postman 测试过,结果相同

最佳答案

我不认为你的代码有什么问题。出现问题的可能原因是另一个异常处理程序正在干扰您的 ExportWordProfileExceptionControllerAdvice。

关于java - 为什么全局异常处理程序总是返回 200 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57614026/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com