跳至主要內容

关键点

guodongAndroid小于 1 分钟

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