You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus反应式链中onFailure未被调用问题咨询

问题分析与解决方案

核心原因

你遇到的问题根源在于Mockito的thenThrow是同步抛出异常,而serviceB.getSettings(id)方法预期返回Uni<SettingsResponse>类型的反应式对象。当你使用thenThrow时,调用该方法的瞬间就直接抛出了异常,完全没进入反应式链的onFailure处理流程,自然不会触发recoverWithItem逻辑。

解决方案

需要让Mockito返回一个已失败的Uni实例,而非直接同步抛出异常。修改测试代码如下:

Mockito.when(serviceB.getSettings(id))
       .thenReturn(Uni.createFrom().failure(new NotFoundException("Not found test")));

这样serviceB.getSettings(id)返回的是一个处于失败状态的Uni,反应式链会正常流转到onFailure().recoverWithItem环节,执行你预设的默认SettingsResponse构建逻辑。

补充说明

Quarkus基于SmallRye Mutiny的反应式API中,onFailure系列操作符仅对反应式流内部的失败状态生效,不会捕获方法调用阶段的同步异常。只有当Uni本身标记为失败时,失败处理逻辑才会被触发。

内容的提问来源于stack exchange,提问作者nano_nano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:40:41