本篇解析 example-flow-33.kt。探讨如何在完成回调中识别异常。
1. 核心特性:Throwable 参数
onCompletion 操作符提供了一个可选的 Throwable? 参数。
参数说明:
- cause == null:表示流是正常处理完毕(所有元素发射并收集完成)。
- cause != null:表示流是因为抛出了异常而提前终止。
2. 代码解析
1 | simple() |
- 注意:
onCompletion仅仅是“感知”到了异常。它不会捕获异常。异常依然会向下游传播,直到被catch或try-catch处理。
3. 开发者感悟
onCompletion 就像是一个监控摄像头,它只负责记录流是为什么结束的。如果你需要处理错误(如显示错误占位图),请配合 catch 使用。