CoroutineExceptionHandler 被用来将通用的 catch
代码块在协程中自定义日志记录或异常处理。
val handler = CoroutineExceptionHandler { _, exception ->
println("Caught $exception")
}
val job = GlobalScope.launch(handler) {
throw AssertionError()
}
val deferred = GlobalScope.async(handler) {
throw ArithmeticException() // 没有打印任何东西,依赖用户去调用 deferred.await()
}
joinAll(job, deferred)
取消子协程不会取消父协程,取消父协程会取消子协程
网友评论