tbruyelle/RxPermissions

Many users crash with io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException

andj207 opened this issue · 1 comments

On Google Play console, the Crashes section reports so many crashes after I upgrade to the new version of this lib that support rxjava3. Below is the stack trace:

io.reactivex.rxjava3.exceptions.OnErrorNotImplementedException: at io.reactivex.rxjava3.internal.functions.Functions$OnErrorMissingConsumer.accept (Functions.java:717) at io.reactivex.rxjava3.internal.functions.Functions$OnErrorMissingConsumer.accept (Functions.java:714) at io.reactivex.rxjava3.internal.observers.LambdaObserver.onError (LambdaObserver.java:77) at io.reactivex.rxjava3.internal.observers.LambdaObserver.onNext (LambdaObserver.java:67) at io.reactivex.rxjava3.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmitScalar (ObservableFlatMap.java:230) at io.reactivex.rxjava3.internal.operators.observable.ObservableFlatMap$MergeObserver.subscribeInner (ObservableFlatMap.java:143) at io.reactivex.rxjava3.internal.operators.observable.ObservableFlatMap$MergeObserver.onNext (ObservableFlatMap.java:136) at io.reactivex.rxjava3.internal.operators.observable.ObservableBuffer$BufferExactObserver.onNext (ObservableBuffer.java:113) at io.reactivex.rxjava3.internal.operators.observable.ObservableFlatMap$MergeObserver.tryEmit (ObservableFlatMap.java:256) at io.reactivex.rxjava3.internal.operators.observable.ObservableFlatMap$InnerObserver.onNext (ObservableFlatMap.java:523) at io.reactivex.rxjava3.observers.SerializedObserver.onNext (SerializedObserver.java:113) at io.reactivex.rxjava3.internal.operators.observable.ObservableConcatMap$SourceObserver$InnerObserver.onNext (ObservableConcatMap.java:250) at io.reactivex.rxjava3.subjects.PublishSubject$PublishDisposable.onNext (PublishSubject.java:310) at io.reactivex.rxjava3.subjects.PublishSubject.onNext (PublishSubject.java:226) at com.tbruyelle.rxpermissions3.RxPermissionsFragment.onRequestPermissionsResult (RxPermissionsFragment.java:69) at com.tbruyelle.rxpermissions3.RxPermissionsFragment.onRequestPermissionsResult (RxPermissionsFragment.java:54) at androidx.fragment.app.FragmentActivity.onRequestPermissionsResult (FragmentActivity.java:768) at android.app.Activity.dispatchRequestPermissionsResult (Activity.java:8474) at android.app.Activity.dispatchActivityResult (Activity.java:8296) at android.app.ActivityThread.deliverResults (ActivityThread.java:5223) at android.app.ActivityThread.handleSendResult (ActivityThread.java:5271) at android.app.servertransaction.ActivityResultItem.execute (ActivityResultItem.java:51) at android.app.servertransaction.TransactionExecutor.executeCallbacks (TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute (TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage (ActivityThread.java:2216) at android.os.Handler.dispatchMessage (Handler.java:107) at android.os.Looper.loop (Looper.java:237) at android.app.ActivityThread.main (ActivityThread.java:7948) at java.lang.reflect.Method.invoke (Method.java) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1075)

That's because you haven't implemented an onError handler when you called subscribe()

Using doOnError() won't be enough, you need to provide an onError implementation to subscribe() or else RxJava will throw exceptions for that particular subscription.