【发布时间】:2018-02-13 09:46:25
【问题描述】:
我正在使用 RxJava 的平面图来按顺序执行多个调用,其中一个调用依赖于前一个调用。我还需要知道在调用 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);
}
});
【问题讨论】:
-
在平面图中只需检查
authResult == nullauthResult observable 是否抛出错误.. 否则 void observable 是否抛出错误.. -
所以即使第一个可观察对象有错误,也总是会调用平面地图代码?该错误是否没有传播?
-
这样想..你可以试一试,让我知道..你也可以在 authResult 中获取一个额外的字段,如字符串错误..如果 authResult == null 将错误设置为 sumthing...然后处理错误
-
但我需要检查第一个可观察对象在失败的情况下发出哪种异常类型,所以这不起作用