关键点
小于 1 分钟
- 在 launch协程构建器中抛出的异常是 未捕获的 异常。
- async协程构建器将异常封装在- Deferred结果对象中。
- 你可以使用 try/catch块形式的常规 Kotlin 代码来处理异常。
- 使用 async时,如果你想处理可能的异常,请确保将await的调用包装在try/catch块中。
- 在父协程的上下文中添加一个 CoroutineExceptionHandler来捕获 未捕获得 异常。
- CoroutineExceptionHandler仅在用户预计不会处理的异常上调用;在- async协程构建器或类似的构建器中注入它没有任何效果。
- 当一个协程的多个子协程抛出一个异常时,一般规则是 第一个异常胜出。
- 协程提供了一种包装回调的方法,通过 suspendCancellableCoroutine挂起函数将异步代码处理的复杂性隐藏在调用者之外,该函数包含在协程库中。
- 如果你不想将异常从子协程传播至父协程,请使用 SupervisorJob。
