gpt4 book ai didi

android - 如何在android中的rxjava2中进行错误处理

转载 作者:行者123 更新时间:2023-11-29 16:48:31 25 4
gpt4 key购买 nike

您好,我在我的 Android 应用程序中使用 RxJava2LiveData。我正在使用下面的

进行 http 调用
@Inject
lateinit var retrofit: Retrofit

override fun doServerLoginApiCall(email: String, password: String): LiveData<LoginResponse> {
val liveData = MutableLiveData<LoginResponse>()

retrofit.create(RestApi::class.java).login(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe { loginResponse ->
liveData.setValue(loginResponse);
}

return liveData
}

我如何处理上面代码中的错误。

when (e) {
is HttpException -> {
val responseBody = (e as HttpException).response().errorBody()
responseBody?.let {
view?.onUnknownError(getErrorMessage(it))
}
}
is SocketTimeoutException -> {
view?.onTimeout()
}
is IOException -> {
view?.onNetworkError()
}
else -> {
e.message?.let {
view?.onUnknownError(it)
}
}
}

最佳答案

如果你想为你的订阅 block 实现 onError,你可以这样做:

retrofit.create(RestApi::class.java).login(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
// success
{ loginResponse ->
liveData.setValue(loginResponse)
},
// error
{ e -> handleError(e) })

...

fun handleError(e: Throwable) {
when (e) {
...
}

关于android - 如何在android中的rxjava2中进行错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47131251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com