我试图在未找到资源时抛出自定义异常,自定义异常以某种方式被 SpringFramework 覆盖并且未显示自定义消息。下面是我写的自定义异常
@ResponseStatus(code = HttpStatus.NOT_FOUND)
public class SkeletonNotFoundException extends RuntimeException {
public SkeletonNotFoundException(String message) {
super(message);
}
}
我想在找不到Mono时抛出上面的异常,下面是找到A资源并抛出错误的逻辑
@GetMapping(value = "/{skeletonId}")
public Mono<ResponseEntity<?>> getSkeleton(@PathVariable final Long skeletonId) {
return skeletonService.findById(skeletonId)
.switchIfEmpty(Mono.error(new SkeletonNotFoundException("Skeleton not found")))
.map(skeleton -> this.skeletonMapper.mapToDto(skeleton))
.map(body -> ResponseEntity.ok().body(body));
}
下面是我向端点发送请求时从 postman 那里得到的结果
{
"timestamp": "2020-11-29T06:15:26.935+00:00",
"path": "/api/v1/skeletons/3",
"status": 404,
"error": "Not Found",
"message": "",
"requestId": "2094d9b0-1"
}
我看不到我的自定义消息,不知何故另一层覆盖了 CustomException
最佳答案
可以通过如下属性配置解决问题:
server.error.include-message: always
关于spring - 未抛出 spring webflux 的自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65057668/