用协程处理异常

时间:2020-05-21 03:09:35

标签: kotlin kotlin-coroutines

我试图了解协程的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”消息。

我对这种行为感到困惑,因为捕获了异常,该异常如何使应用程序崩溃?

有人可以帮助我弄清楚这种情况吗?谢谢!

0 个答案:

没有答案