gpt4 book ai didi

java - 如何使用 RxJava/RxAndroid 在 OnNext 中抛出异常

转载 作者:太空狗 更新时间:2023-10-29 13:05:49 25 4
gpt4 key购买 nike

我在我的 Android 应用程序中使用 Retrofit 进行网络调用。现在如果响应有问题(可能是错误的数据),我不希望执行 onComplete。请查看代码 fragment ,

restClient.getService().getProjectDetail(projectId)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableObserver<List<Project>>() {
@Override
public void onNext(List<Project> value) {
/*Something wrong in the data and I would like to execute onError*/
}

@Override
public void onError(Throwable e) {
handleError(e, 0, "");
hideProgressDialog();
}

@Override
public void onComplete() {
hideProgressDialog();
}
});

提前致谢。

最佳答案

由于您的最终消费者可能会崩溃,直接的方法是捕获该异常并委托(delegate)给 onError:

.subscribeWith(new DisposableObserver<List<Project>>() {
@Override
public void onNext(List<Project> value) {
try {
// something that can crash
} catch (Throwable ex) {
// tell the upstream we can't accept any more data
dispose();
// do the error handling
onError(ex);
}
}
@Override
public void onError(Throwable e) {
handleError(e, 0, "");
hideProgressDialog();
}

@Override
public void onComplete() {
hideProgressDialog();
}
});

顺便说一句,RxJava 做 pretty much this在处理可能失败的用户函数时在它自己的操作符中:try-catch,cancel the source并通过 onError 发出信号。

关于java - 如何使用 RxJava/RxAndroid 在 OnNext 中抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48255748/

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