代码之家  ›  专栏  ›  技术社区  ›  OOD Waterball

在哪里可以得到subscribe()方法中抛出的异常?

  •  -1
  • OOD Waterball  · 技术社区  · 9 年前

    我在用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()中抛出的异常 , 观察员onError()

    1 回复  |  直到 9 年前
        1
  •  0
  •   Jon G Stødle    9 年前

    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()