获取 AndroidRuntime:致命异常:DefaultDispatcher-worker-1,没有其他堆栈跟踪

geo*_*sey 15 android kotlin retrofit retrofit2 kotlin-coroutines

当使用 Retrofit 和协程从 API 获取数据时,我有时会遇到应用程序崩溃,Logcat 中没有堆栈跟踪,除了以下情况:AndroidRuntime: FATAL EXCEPTION: DefaultDispatcher-worker-1

geo*_*sey 54

这通常是由 Retrofit 引发常见异常(如 UnknownHostException)(如果没有 Internet)以及协程吞没异常(如果您没有指定 CoroutineExceptionHandler)引起的。

因此,在启动代码中添加一个协程异常处理程序,如下所示:

val coroutineExceptionHandler = CoroutineExceptionHandler{_, throwable ->
    throwable.printStackTrace()
}

fun getFromApi() {
    viewModelScope.launch(Dispatchers.IO + coroutineExceptionHandler) {
        retrofitService.getStuffFromInternet()
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,这只是将错误记录到 Logcat,以便您可以看到丢失的堆栈跟踪。您仍然需要弄清楚是什么原因造成的。

  • 你是一个传奇。获取额外的调试信息救了我的命 (3认同)