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,以便您可以看到丢失的堆栈跟踪。您仍然需要弄清楚是什么原因造成的。
| 归档时间: |
|
| 查看次数: |
18202 次 |
| 最近记录: |