我制作了一个全局异常处理程序来捕获包装的业务异常。
我想为每个包装的异常返回不同的状态代码和自定义响应。
所以我做了一个全局异常处理程序:
@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的控制器时,我
总是得到200状态代码。但是我有正确的错误信息:
<200,{"data":{"status":"NOT_FOUND","message":"Le profile avec l'id '8e6d45ca-d08f-48b8-8ed0-ea7ea067cf5e' n'existe pas."}} .....
我该如何解决这个问题?
谢谢阅读。
..............
编辑
.............
这个问题可能来自我使用RestTemplate进行测试的方式吗?
我与Postman进行了测试,结果相同
最佳答案
我认为您的代码没有任何问题。造成此问题的可能原因是因为另一个异常处理程序正在干扰ExportWordProfileExceptionControllerAdvice。