kotlin - 使用协程处理异常
问题描述
我试图了解协程上的 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")
}
}
我期望在应用程序和控制台日志中不会发生崩溃并打印“抛出异常”消息,
但即使控制台日志打印“抛出异常”消息,上面的代码也会导致崩溃。
我对这种行为感到困惑,因为异常被捕获,这个异常如何使应用程序崩溃?
有谁可以帮我弄清楚这种情况?谢谢!
解决方案
推荐阅读
- python - 在 python 中使用循环单独选择每个 SQL 列并将它们存储在列表中
- android - 如何在 C++ 代码中将 ARMEABI-V7A 汇编器切换到 ARM64?
- wpf - 从 wpf 中的 xaml 动态加载 shell 模块
- javascript - 尽管重新定义,仍删除整个对象
- postgresql - 连接未关闭(HikariCP,Postgres)
- flutter - Flutter - 使用 API Url 搜索
- java - 为什么在 OPC UA 中打开安全通道时从客户端到服务器的问候消息超过 1 条?
- php - 在 codeigniter 中加载支付网关页面
- javascript - Vue.js 访问动态生成(基于 Vuex 数据)表格单元格属性的问题
- wordpress - 获取 Buddypress 的当前用户角色