java-8 - Maybe 接收到 null 时不会调用 onError

标签 java-8 reactive-programming rx-java2 rx-android

我正在学习如何使用 Maybe observable。我创建了下面的示例。情况

Maybe.just(value) I will receive the value in onSuccess callback.

对于 Maybe.just(null),我希望收到来自 onError 的日志。但是,根据发布的代码,当我运行代码时,应用程序崩溃并且我没有收到任何日志。 您能告诉我为什么我没有收到来自 onError() 的任何日志吗?

代码

Maybe.just(null)
            .subscribe(
                    i->Log.i("TAG:", "[onSuccess]: " + i),
                    err->Log.e("TAG", "[ERROR] err.getMessage(): " + err.getMessage()),
                    () -> Log.i("TAG", "[COMPLETED]: ")
         );

最佳答案

您无法创建执行 Maybe.just(null)Maybe。它将抛出 NullPointerException,这就是您的应用崩溃的原因。

有人建议图书馆应该有 Create a Maybe from null in RxJava 的选项,但不幸的是这不会发生:

Closing as won't happen. Static methods returning RxJava types can live on any external class.

解决这个问题的方法是替换它:

Maybe.just(null)

为此:

Maybe.fromCallable(() -> null)

关于java-8 - Maybe 接收到 null 时不会调用 onError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53897495/

相关文章:

java - JDK 8 中的设置/列表初始化语法

java - 如何同时调用所有 `Mono<E>`

java - react 堆 : How to convert a Flux of entities into a Flux of DTO objects

android - RxJava Single to Completable to Single - 如何将第一个 Single 的结果传递给第二个 Single

rx-java - 为什么 Flowable 不是 Observable

android - 测试异步 RxJava 代码 - Android

java - 在第一列中查找重复项并根据第三列取平均值

java - Java 8 中::运算符的名称是什么

java-8 - 使用 Jersey Client 2.x 将查询参数添加到 WebTarget

android - RXJava 如何使可观察的继续 onError