您好我CallbackWrapper
在rxjava
的单个位置处理错误处理。
abstract class CallbackWrapper<T : BaseResponse> : DisposableObserver<T>() {
protected abstract fun onSuccess(t: T)
override fun onNext(t: T) {
onSuccess(t)
}
override fun onError(e: Throwable) {
when (e) {
is HttpException -> {
val responseBody = (e as HttpException).response().errorBody()
responseBody?.let {
// todo
}
}
is SocketTimeoutException -> {
// todo
}
is IOException -> {
// todo
}
else -> {
e.message?.let {
// todo
}
}
}
}
override fun onComplete() {
}
private fun getErrorMessage(responseBody: ResponseBody): String {
val jsonObject = JSONObject(responseBody.string())
return jsonObject.getString(("message"))
}
}
我在LoginViewModel
课程中就像下面这样称呼它。
apiHelper.doServerLoginApiCall(email, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(object : CallbackWrapper<LoginResponse>() {
override fun onSuccess(loginResponse: LoginResponse) {
progressVisibility.set(View.GONE)
}
})
我在onError
中有CallbackWrapper
方法,通知是否有任何错误。我不知道如何将此错误信息发送到查看模型。我正在使用MVVM设计模式。
任何人都可以暗示我吗?