我遇到了这样一种情况,即在协程中运行的任何内容(数据库查询,网络请求或响应处理)在某个时间点失败,只是使应用程序崩溃而根本没有任何日志。是预期的行为还是我配置错误?
这里是一段简单的代码,可以重现该错误。 不同的调度程序没有任何变化。
这是我获得的唯一输出,其次是应用终止
这些是我正在使用的依赖项,是撰写本文时的最新版本。
它也可以在没有Android框架的简单CLI应用程序中重现。
编辑:只是为了清楚起见。我并不想看到我抛出的异常。当我的应用由于未知原因而崩溃时,我试图获得一些输出。
Edit2:为更加清楚起见,这是没有任何“ throw”语句的情况的另一个示例。
答案 0 :(得分:1)
由于协程内部发生异常,因此也可以在协程中找到异常。只需将其用try
/ catch
包围起来,您就会发现神奇的地方:
GlobalScope.launch{
try{
print("Your printing message")
throw Exception("Message here")
}catch(exception: Exception){
exception.printStacktrace()
}
}