我在哪里可以获得 subscribe() 方法中抛出的异常?
Where can I get the exception throwed within the subscribe() method?
我正在使用 rxAndroid。
看了很多文档,还是没找到解决办法,可能是我漏了,
所以请给我一个指导。
在这里,我创建了一个可能在订阅方法中抛出异常的可观察对象。
return Observable.create(new ObservableOnSubscribe<Project>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Project> e) throws Exception {
e.onNext(projectRepository.readDetails(project.getId()));
e.onComplete();
}
});
我使用存储库模式来获取项目详细信息,
但问题是所有存储库方法都可能抛出异常,
projectRepository.readDetails(project.getId())
而且我无论如何也找不到处理方法 subscibe() 中抛出的异常 ,Observer 的 onError() 不会得到任何通知。
谢谢。
手动创建可观察对象时,您必须捕获任何异常并将它们手动传递给 onError()
:
return Observable.create(new ObservableOnSubscribe<Project>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Project> e) throws Exception {
try {
e.onNext(projectRepository.readDetails(project.getId()));
e.onComplete();
}
catch (Exception ex) {
e.onError(ex);
}
}
});
或者,您应该能够使用 fromCallable()
来避免手动创建可观察对象:
Observable.fromCallable(() -> projectRepository.readDetails(project.getId()));
如果调用失败,这将发出 onError()
信号。
我正在使用 rxAndroid。
看了很多文档,还是没找到解决办法,可能是我漏了,
所以请给我一个指导。
在这里,我创建了一个可能在订阅方法中抛出异常的可观察对象。
return Observable.create(new ObservableOnSubscribe<Project>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Project> e) throws Exception {
e.onNext(projectRepository.readDetails(project.getId()));
e.onComplete();
}
});
我使用存储库模式来获取项目详细信息, 但问题是所有存储库方法都可能抛出异常,
projectRepository.readDetails(project.getId())
而且我无论如何也找不到处理方法 subscibe() 中抛出的异常 ,Observer 的 onError() 不会得到任何通知。
谢谢。
手动创建可观察对象时,您必须捕获任何异常并将它们手动传递给 onError()
:
return Observable.create(new ObservableOnSubscribe<Project>() {
@Override
public void subscribe(@NonNull ObservableEmitter<Project> e) throws Exception {
try {
e.onNext(projectRepository.readDetails(project.getId()));
e.onComplete();
}
catch (Exception ex) {
e.onError(ex);
}
}
});
或者,您应该能够使用 fromCallable()
来避免手动创建可观察对象:
Observable.fromCallable(() -> projectRepository.readDetails(project.getId()));
如果调用失败,这将发出 onError()
信号。