文章目录
一、异常传播的特殊情况
1、取消子协程示例
2、子协程抛出异常后父协程处理异常时机示例
二、异常聚合 ( 多个子协程抛出的异常会聚合到第一个异常中 )
一、异常传播的特殊情况
----
在...【Kotlin 协程】协程异常处理 ① ( 根协程异常处理 | 自动传播异常 | 在协程体捕获异常 | 向用户暴露异常 | 在 await 处捕获异常 | 非根协程异常处理 | 异常传播特性 ) 博客中介绍到...协程 运行时 , 产生异常 , 会将异常 传递给 父协程 , 父协程会执行如下操作 :
① 取消子协程 : 不仅仅取消产生异常的子协程 , 该父协程下所有的子协程都会取消 ;
② 取消父协程 : 将父协程本身取消...父协程 进行处理 ;
如果 父协程 有多个子协程 , 多个子协程 都抛出异常 , 父协程会等到 所有子协程 都执行完毕会后 , 再处理 异常 ;
1、取消子协程示例
在下面的代码中 , 在 父协程中...主线程 一直占用线程 , 子协程无法执行 ;
子协程执行起来后 , 取消子协程 , 此时 在子协程中 , 会抛出 CancellationException 异常 , 该异常不会传递到 父协程 中 ,