Java 8 当接收到null时,不会调用onError

Java 8 当接收到null时,不会调用onError,java-8,reactive-programming,rx-java2,rx-android,Java 8,Reactive Programming,Rx Java2,Rx Android,我正在学习如何使用“可观察”。我创建了下面的示例。万一 Maybe.just(value) I will receive the value in onSuccess callback. 在Maybe.just(null)的情况下,我希望从onError接收日志。但是,根据发布的代码,当我运行代码时,应用程序崩溃,我没有收到任何日志。 您能告诉我为什么我没有收到OneError()的任何日志吗 代码 Maybe.just(null) .subscribe(

我正在学习如何使用“可观察”。我创建了下面的示例。万一

Maybe.just(value) I will receive the value in onSuccess callback.
在Maybe.just(null)的情况下,我希望从onError接收日志。但是,根据发布的代码,当我运行代码时,应用程序崩溃,我没有收到任何日志。 您能告诉我为什么我没有收到OneError()的任何日志吗

代码

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

您不能创建一个
Maybe
执行
Maybe。只需(null)
。它将抛出一个
NullPointerException
,这就是你的应用程序崩溃的原因

有些人建议图书馆可以选择,但不幸的是,这不会发生:

关闭,因为不会发生。返回RxJava类型的静态方法可以存在于任何外部类上

这样做的一个解决方法是替换以下内容:

Maybe.just(null)
为此:

Maybe.fromCallable(() -> null)
因为也许只是,那些日志记录语句永远没有机会运行。