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

kotlinx.coroutines.channels.ChannelResult三个on函数调用条件及单独触发场景问询

仅触发onFailure或onClosed的场景分析

仅触发onFailure的场景

  • 消费端抛出未捕获异常:在处理元素的逻辑中主动抛出未捕获的运行时异常,且框架未将该异常判定为流终止信号时,只会触发onFailure,不会调用onClosed。比如在onSuccess回调内执行throw new RuntimeException("处理失败"),框架仅会通过onFailure通知错误,不会终止整个订阅关系。
  • 上游发送独立错误信号:部分响应式框架支持上游发送单个错误事件但不终止流(如自定义流实现),此时onFailure会被触发,但流仍保持活跃状态,因此onClosed不会被调用。

仅触发onClosed的场景

  • 主动取消订阅:消费者主动调用取消订阅的方法(如RxJava的dispose()、Reactor的dispose()),此时流正常关闭且无错误产生,只会触发onClosed,不会触发onFailure。
  • 上游正常完成流:上游流发送完所有元素后发送完成信号(如响应式流规范中的onComplete),订阅关系正常结束,仅会触发onClosed。
  • 无错误的框架主动关闭:框架因达到预设消费上限、无错误超时等场景主动关闭订阅时,没有错误发生,只会触发onClosed。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 08:37:09