Android rxjavaflatmap:如何检查哪个可观察对象发出了错误

Android rxjavaflatmap:如何检查哪个可观察对象发出了错误,android,rx-java,Android,Rx Java,我使用RxJava的flatmap来按顺序执行多个调用,其中一个调用依赖于前一个调用。我还需要知道在调用onError的情况下哪个observable发出了错误,以便正确地实现我的错误处理。我如何做到这一点 这是我的密码: mSubscription = RxUtil.callObservable(mDataManager.createAccount(email, password)) .flatMap(new Func1<AuthResult, Observabl

我使用RxJava的flatmap来按顺序执行多个调用,其中一个调用依赖于前一个调用。我还需要知道在调用onError的情况下哪个observable发出了错误,以便正确地实现我的错误处理。我如何做到这一点

这是我的密码:

mSubscription = RxUtil.callObservable(mDataManager.createAccount(email, password))
            .flatMap(new Func1<AuthResult, Observable<Void>>() {
                @Override
                public Observable<Void> call(AuthResult authResult) {

                    User user = new User(0, null, null, name, null, username, 0, 0);

                    return RxUtil.callObservable(mDataManager.createUser(authResult.getUser().getUid(), user));
                }
            })
            .subscribe(new Subscriber<Void>() {
                @Override
                public void onCompleted() {

                }

                @Override
                public void onError(Throwable throwable) {
                    try {
                        throw (Exception) throwable;
                    } catch (FirebaseAuthUserCollisionException ucException) {
                        getPickUpView().showError(PickUpApplication.getContext().getString(R.string.error_account_exists));
                    } catch (Exception exception) {
                        getPickUpView().showError(PickUpApplication.getContext().getString(R.string.error_account_general));
                    }
                }

                @Override
                public void onNext(Void aVoid) {
                    getPickUpView().createAccountSuccessful(authResult);
                }
            });

我想得不对。总之,我认为这是一个我需要解决的问题,而我没有。RxJava将在onError方法中发出所有错误,无论哪个observative发出错误。一旦调用OneError,订阅就完成了,因此flatmap调用将永远不会发生


总之,我需要做的就是用同一个onError方法处理来自我调用的原始和flatmap中的两个观察值的错误。

在flatmap中,只需检查authResult==null authResult observable是否抛出错误。。否则,void observable将抛出错误。那么,即使第一个observable有错误,也将始终调用flatmap代码?那个错误没有被传播出去吗?你可以试试,让我知道。。此外,您还可以在authResult中获取一个额外字段,如String error..if authResult==null,将错误设置为sumthing…然后处理错误,但我需要检查第一个可观察对象在失败的情况下发出的异常类型,因此这不起作用