我试图了解协程的try catch机制,并对它的行为感到好奇。
这里显示的是一段代码
val job: Job = Job()
val scope = CoroutineScope(Dispatchers.Default + job)
scope.funTryCatch()
fun CoroutineScope.funThrowException(): Deferred<String> = async {
error("Throw exception")
}
fun CoroutineScope.funTryCatch() = launch {
try {
funThrowException().await()
} catch (e: Exception) {
println("Exception: $e")
}
}
我期望在应用程序和控制台日志中不会发生崩溃,消息会显示“抛出异常”,
但是上面的代码导致崩溃,即使控制台日志打印“ Throw exception”消息。
我对这种行为感到困惑,因为捕获了异常,该异常如何使应用程序崩溃?
有人可以帮助我弄清楚这种情况吗?谢谢!