【问题标题】:Kotlin/Android app crashes without a Stack TraceKotlin/Android 应用程序在没有堆栈跟踪的情况下崩溃
【发布时间】:2020-03-18 11:57:01
【问题描述】:

我遇到过这样一种情况,即在协程中运行的任何内容(数据库查询、网络请求或响应处理)并在某些时候失败,只会在没有任何日志的情况下使应用程序崩溃。这是预期的行为还是我配置错误?

这是一段重现错误的简单代码。 不同的 Dispatchers 没有任何变化。

这是我得到的唯一输出,然后是应用程序终止

这些是我正在使用的依赖项,是撰写本文时的最新版本。

它也在一个没有 Android 框架的简单 CLI 应用程序中重现。

编辑:只是为了说清楚。我不想看到我抛出的异常。当我的应用由于未知原因崩溃时,我正在尝试获取一些输出。

Edit2:为了更清楚起见,这里是另一个没有任何“抛出”语句的情况示例。

【问题讨论】:

    标签: android kotlin kotlin-coroutines


    【解决方案1】:

    由于异常发生在协程内部,因此在那里找到它也是有意义的。只需用try/catch 包围它,您就会看到神奇之处:

    GlobalScope.launch{
      try{
       print("Your printing message")
       throw Exception("Message here")
      }catch(exception: Exception){
       exception.printStacktrace()
       }
     }
    

    【讨论】:

    • 有意义吗?如果我要在另一个线程中抛出异常,应用程序将在日志中出现堆栈跟踪而崩溃。将每个协程块包装在 try/catch 中听起来不是正确的做法。而且我看不到为什么应用程序崩溃的事实感觉不对。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 1970-01-01
    • 2019-07-26
    • 2020-12-07
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多