进行捕获 , 异常满足如下两个条件才会被捕 :
异常捕获时机 : 协程 自动抛出 的异常 , 可以在协程内被捕获 ; 使用 launch 构建的协程 可以在协程中捕获异常 , 使用 async 构建的协程...代码示例 :
使用 launch 构造的协程 , 可以使用 CoroutineExceptionHandler 捕获异常 ;
使用 async 构造的协程 , 无法使用 CoroutineExceptionHandler..., 但是 async 创建的协程中的异常直接抛出导致程序崩溃 ;
14:35:22.587 I CoroutineExceptionHandler 中处理异常...在上面的小节验证了 异常捕获位置 在根协程 中的情况 , 在本小节示例中 , 验证在 协程作用域 CoroutineScope 中捕获异常 ;
代码示例 : 在 协程作用域 中 , 使用 launch...时 , 使用的 CoroutineScope(Job()) 进行创建 , 不是 SupervisorJob , 因此 在子协程中抛出的异常 , 会传递给父协程 , 由父协程处理异常 , 父协程创建时使用的