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

时间:2018-12-22 16:42:46

标签: 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]: ")
         );

1 个答案:

答案 0 :(得分:2)

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

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

  

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

一种解决方法是替换此:

Maybe.just(null)

为此:

Maybe.fromCallable(() -> null)