RxJava热可观察流中的NullPointerException



我有一个流,我正在观察用户选择的业务。当不选择业务时,它应该释放null。这是一个热点可观察对象,所以它不应该终止。

    @Override
    public Observable<Business> observeSelected() {
        return selectedDb.observe()
                .flatMap(businessId -> observe(businessId);
    }

这里有两个重要的方法调用

  1. Observable<String> selectedDb.observe()

返回所选业务的String businessId,如果不选择业务则返回null

  • Observable<Business> observe(String businessId)返回Business和#1的businessId,如果没有找到具有指定ID的业务,则返回null
  • 如果#1或#2发出null,我希望整个方法只发出一次null

    显然,当#1或#2发出null时,这段代码将抛出NullPointerException。我可以在上面的代码中随意添加null检查并发出null,但这会使它变得非常难看。是否有一种方法来捕获只有NullPointer异常与RxJava?我可以使用.filter()来防止发出null,但是我仍然希望在没有选择业务时发出onNext(null)

    这里的最佳实践是什么?

    三元表达式似乎是最好的选择,尽管仍然有点难看。

    @Override
    public Observable<Business> observeSelected() {
        return selectedDb.observe()
                .flatMap(businessId -> businessId != null ? observe(businessId) : Observable.just(null));
    }
    

    相关内容

    • 没有找到相关文章

    最新更新