本篇解析 example-flow-34.kt。探讨 onCompletion 在感知异常方面的优势。
1. 核心特性:全方位观察
与 catch 操作符只能捕获上游异常不同,onCompletion 能够观察到所有导致流结束的异常(包括上游、中间操作符以及下游 collect 里的异常)。
2. 代码解析
1 | simple() |
- 注意:虽然它能看到下游的异常,但它依然不捕获它。程序仍会因为这个异常而报错。
3. 开发者感悟
onCompletion 就像是一个“黑匣子”飞行记录仪。无论流是因为什么原因坠毁的,它都能把最后的异常状态记录下来。这对于问题排查和日志分析非常有价值。