The mapper function returned a null value
28,858
The problem comes from RxJava 2, which won't allow null
values to be passed down the stream. In particularly your case, you have a mapper function, that returns a null
value, which the exception clearly states.
You can reproduce that with following chunk of code:
Observable.just(1)
.map(integer -> null)
.test()
.assertError(throwable ->
"The mapper function returned a null value.".equals(throwable.getMessage()));
Comments
-
Expert wanna be over 2 years
I set same build types for debug and release,
buildTypes { debug { buildConfigField "String", "API_BASE_URL", "\"https://www.testUrl.com/api/\"" minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release_key } release { buildConfigField "String", "API_BASE_URL", "\"https://www.testUrl.com/api/\"" minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' signingConfig signingConfigs.release_key } }
But If I build with the release, I got the below error. Also, the server response is exactly same.
W/System.err: java.lang.NullPointerException: The mapper function returned a null value. W/System.err: at b.a.e.b.b.a(Unknown Source) W/System.err: at b.a.e.e.b.bs$a.onNext(Unknown Source) W/System.err: at b.a.e.e.b.cm$a.onNext(Unknown Source) W/System.err: at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(Unknown Source) W/System.err: at retrofit2.adapter.rxjava2.BodyObservable$BodyObserver.onNext(Unknown Source) W/System.err: at retrofit2.adapter.rxjava2.CallExecuteObservable.subscribeActual(Unknown Source) W/System.err: at b.a.l.subscribe(Unknown Source) W/System.err: at retrofit2.adapter.rxjava2.BodyObservable.subscribeActual(Unknown Source) W/System.err: at b.a.l.subscribe(Unknown Source) W/System.err: at b.a.e.e.b.cm$a.a(Unknown Source) W/System.err: at b.a.e.e.b.cm.subscribeActual(Unknown Source) W/System.err: at b.a.l.subscribe(Unknown Source) W/System.err: at b.a.e.e.b.bs.subscribeActual(Unknown Source) W/System.err: at b.a.l.subscribe(Unknown Source) W/System.err: at b.a.e.e.b.bw.subscribeActual(Unknown Source) W/System.err: at b.a.l.subscribe(Unknown Source) W/System.err: at b.a.e.e.b.dd$b.run(Unknown Source) W/System.err: at b.a.s$a.run(Unknown Source) W/System.err: at b.a.e.g.j.run(Unknown Source) W/System.err: at b.a.e.g.j.call(Unknown Source) W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237) W/System.err: at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:272) W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) W/System.err: at java.lang.Thread.run(Thread.java:761)
-
Benoit over 5 yearsThe main problem though is that such a trace does not allow to know which map is returning a null value
-
cosic almost 5 yearsActually you can handle such cases. For more info see article: rongi.github.io/kotlin-blog/rxjava/2017/09/25/…
-
nbroeking over 4 years1. I don't understand how this question was marked duplicate. 2. I don't understand how there is not an answer to this question that helps find which map is returning a null value.
-
RefuX about 4 yearsHandling null in RxJava 2.0: medium.com/@joshfein/handling-null-in-rxjava-2-0-10abd72afa0b
-
Honza Zidek over 2 years@RefuX: "I don't understand how this question was marked duplicate." Hmm, a lot of good questions are marked as duplicate. It is based on the laziness of the reviewers - they react just to known keywords :( I marked the question to Reopen, please join me.