本篇解析 example-flow-28.kt。学习 Flow 提供的专门用于异常处理的操作符。
1. 核心操作符:catch
catch 操作符用于捕获并处理流中的异常。
特点:
- 异常透明性:它只捕获上游发生的异常。
- 恢复能力:在
catch块中,你可以选择:- 使用
emit发射一个默认值或错误提示。 - 重新抛出异常。
- 记录日志并停止流。
- 使用
2. 代码解析
1 | simple() |
- 结果:当上游
map报错时,catch拦截了它,并发射了一个字符串 “Caught…”。收集端(collect)会像接收普通数据一样接收到这个字符串,程序不会崩溃。
3. 开发者感悟
catch 操作符让异常处理变得非常具有“流”的风格。它将错误处理也变成了数据流的一部分,这在构建响应式 UI 时非常优雅。