tbruyelle / RxPermissions

Android runtime permissions powered by RxJava2
Apache License 2.0
10.49k stars 1.31k forks source link

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

Open andj207 opened 3 years ago

andj207 commented 3 years ago

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)

sandy-8925 commented 1 year ago

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.