gpt4 book ai didi

android - 为什么在 Android doOnError() 上使用 Retrofit 的 RxJava 不起作用但订阅者 onError 可以

转载 作者:IT老高 更新时间:2023-10-28 22:25:25 29 4
gpt4 key购买 nike

谁能解释一下为什么要写这样的代码:

 networApi.getList()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.doOnError(throwable -> {
throwable.getMessage();
})
.doOnNext(list -> {
coursesView.populateRecyclerView(list);
courseList = (List<Course>) courses;
}).subscribe();

如果没有互联网进入 doOnError 但进一步抛出它使应用程序崩溃,但代码如下:

networkApi.getList()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Subscriber<List<? extends Course>>() {
@Override
public void onCompleted() {

}

@Override
public void onError(Throwable e) {
e.getMessage();
}

@Override
public void onNext(List<? extends Course> list) {
coursesView.populateRecyclerView(list);
courseList = (List<Course>) list;
}
});

按照我的预期工作,这意味着当没有互联网连接时它什么也不做。

最佳答案

基本上,doOnError 不会处理错误,因为它不会消耗它。它只是用它做一些事情,例如记录它。 (对于 doOnNext 也是如此 - 它也不会使用该项目,并且该项目仍会在 SubscriberonNext 中结束。

错误仍会沿链向下发送,并且仍会出现在您的 SubscriberonError 中。

我很确定您的应用程序因 OnErrorNotImplementedException 而崩溃,那是因为您根本没有任何 Subscriber,因此没有 onError 方法。

关于android - 为什么在 Android doOnError() 上使用 Retrofit 的 RxJava 不起作用但订阅者 onError 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33670101/

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