spring - 未抛出 spring webflux 的自定义异常

标签 spring spring-boot spring-webflux

我试图在未找到资源时抛出自定义异常,自定义异常以某种方式被 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/

相关文章:

javascript - 未捕获的语法错误 : Invalid or unexpected token spring boot

java - Spring MVC 项目上的“缺少 Artifact ”和 'Failed to read artifact descriptor' 错误

java - 每页 Sitemesh 自定义 javascript

java - Bitronix 事务无法与 JMS 队列一起使用

java - Spring boot 构建变体 使用 gradle 的配置文件特定属性

java - 响应式 Java Webflux 请求在 60 秒后终止

java - 为什么事务在 Spring JPA 中没有回滚到所需的传播级别?

java - Spring Boot不加载application.properties

java - 您可以通过 Flux.zip 压缩一个单声道和一个通量,并为每个通量值重复单声道值吗?

java - 有没有一种方法可以成功执行嵌套通量操作而不实际阻塞您的代码?