我在哪里可以获得 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() 信号。