我有一个逻辑,我必须在从其他服务获取一些数据后运行 . 如何处理其中一个或全部的故障?
我希望记录一个错误,而不是抛出异常
// Step 1
Observable<Provider> providerObservable =
providerService
.getProvider(data)
.toObservable()
.onErrorResumeNext(e -> Observable.error(e.getCause()));
// Step 2
Single<Profile> profileObservable =
profileService
.getProfile(data)
.onErrorResumeNext(e -> Single.error(e.getCause()));
Observable<ExtendedProfile> extendedProfileObservable =
profileObservable
.flatMap(this::getExtendedProfile)
.toObservable()
.onErrorResumeNext(e -> Observable.error(e.getCause()));
// Combine
Observable.combineLatest(providerObservable, extendedProfileObservable, this::handleProviderAndProfile)
.doOnError(throwable -> logError(throwable))
.onErrorResumeNext(throwable -> Observable.empty())
.subscribe();
这让我陷入困境 . 没有任何内容写入日志 .
1 回答
你可以试试上面的东西 .
providerObservable
,extendedProfileObservable
和handleProviderAndProfile
是combineLatest
的输入,(providerObservable, extendedProfileObservable, handleProviderAndProfile) -> operationFunction(providerObservable, extendedProfileObservable, handleProviderAndProfile)
是为lambda提供结果 . 这应该是对所有三个输入执行的操作 .