在我的应用中。我正在尝试使用 Kotlin Coroutines 发送网络请求。我分析了响应并在某些情况下抛出异常。这是代码:
class ProxyErrorInterceptor : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
val request = chain.request()
val response = chain.proceed(request)
val bodyString = response.body()?.string()
when (response.code()) {
HttpURLConnection.HTTP_OK -> {
val error = Gson().fromJson(bodyString, BusinessModel::class.java)
if (error.errorCode != null) {
throw BusinessDataException(error.errorCode, error.errorMessage)
}
}
HttpURLConnection.HTTP_INTERNAL_ERROR -> {
val error = Gson().fromJson(bodyString, BusinessModel::class.java)
if (error.errorCode != null) {
throw BusinessDataException(error.errorCode, error.errorMessage)
}
}
}
return response.newBuilder()
.body(ResponseBody.create(response.body()?.contentType(), bodyString)).build()
}
}
此拦截例外。
fun getAccounts() {
try {
val myJob = GlobalScope.launch(Dispatchers.IO) {
val response = interactor.getAccounts()
launch(Dispatchers.Default) {
data.postValue(mapper.mapAccountList(response))
}
}
} catch (e: Exception) {
Log.d("Проверка", e.message)
}
}
但是这没有解决,最后我的应用崩溃了。
答案 0 :(得分:0)
我相信loadingStatus.progress.set(false)
是问题所在。在主线程中未执行该操作,这可能会引发异常。每当您更新UI时,请使用Dispatchers.MAIN
而不是Dispatchers.Default