RxAndroid - 如何在 onCompleted() 之后抛出致命异常

RxAndroid - how to throw fatal exceptions after onCompleted()

我们正在为我们的 api 调用使用 RxAndroid + 改造。

我有点理解为什么序列中的任何异常都会通过 onError() 传递给 Throwable。

但是如何结束序列,然后如何处理响应并return再次抛出致命异常?我原以为 onCompleted() 中的处理会允许这样做,但我仍然看到 onError() 被调用。

下面的简化代码段。给出结果 -

throwable: Attempt to invoke virtual method 'boolean java.util.ArrayList.add(java.lang.Object)' on a null object reference

        Observable<ResponseModel> observable = getApiCallObservable();
        AppObservable.bindFragment(this, observable)
                .subscribeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<ResponseModel>() {
                    @Override
                    public void onCompleted() {
                        uninitializedList.add("item");
                    }

                    @Override
                    public void onError(Throwable e) {
                        Log.e(TAG, "throwable: " + e.getMessage());
                    }

                    @Override
                    public void onNext(ResponseModel response) {
        
                    }
                });

感谢您的帮助

我不确定我是否理解这里的问题。基本上,如果你的 Observable getApiCallObservable() 抛出错误,onError 将被调用,你应该在 onError 中相应地处理错误。如果发生这种情况,就这样,什么都不会再发生了。如果发生错误,则调用 onError 并结束流。如果没有错误,将调用 onNext,这就是您应该对响应执行任何操作的地方。在 onNext 之后,最后调用 onCompleted

显示的错误只是说您的数组列表 uninitializedList 为空,因此方法调用 add() 无效。

编辑。我想我现在明白你的意思了。您希望在不通过可观察对象调用 onError 的情况下处理错误。将你的 oncomplete 代码移动到 onNext,它不会落入 onError,它会抛出致命异常。是吗?