协程进阶:组合 06. 并发环境下的异常传播

本篇解析 example-compose-06.kt。探讨并发任务中的错误级联。

1. 核心现象:一人失败,全家取消

coroutineScope 启动的并发任务中,只要其中一个子协程抛出异常,所有其他的兄弟协程都会被取消

执行流程 (example-compose-06):

  1. 启动 async#1,它模拟一个非常耗时的计算。
  2. 启动 async#2,它立即抛出 ArithmeticException
  3. 结果async#1finally 块会立即被执行,因为它被 async#2 引起的级联取消信号中断了。

2. 开发者总结

这种机制虽然听起来很严格,但它是“结构化并发”的核心精髓。它防止了一个小任务的失败导致整个系统资源(如线程、网络连接)的浪费。在 Android 页面加载多个组件数据时,这种设计能确保一旦主要逻辑报错,整个界面的其他耗时异步加载也会立即停止,从而保持系统的健壮性。

,