关于 BehaviorSubject onError() 导致的 Undeliverable exception received

RxJava 版本为 2.2.7。

在做项目的时候,偶然碰到了一个关于 BehaviorSubject 的 crash,日志给的 msg 简要信息为 Undeliverable exception received

导致问题的操作是在没有订阅者的情况下,多次调用了 BehaviorSubject#onError()

补充:后来又尝试了一下,即使在有订阅者的情况下,多次调用 BehaviorSubject#onError() 也会触发异常。

相关的文档,以及解决方法,可以查看:https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-2.0#error-handling

25.11.11 10:19:18.703,HALO-RxJavaPlugins,[1762827558702], [main] : io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | java.lang.RuntimeException: Cannot create an instance of class com.tplink.libtpnetwork.MeshNetwork.repository.MeshNetworkRepository at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:21) at io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.runFinally(ObservableDoFinally.java:19) at io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.onError(ObservableDoFinally.java:6) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.checkTerminated(ObservableObserveOn.java:48) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.drainNormal(ObservableObserveOn.java:13) at io.reactivex.internal.operators.observable.ObservableObserveOn$ObserveOnObserver.run(ObservableObserveOn.java:9) at io.reactivex.android.schedulers.HandlerScheduler$ScheduledRunnable.run(HandlerScheduler.java:3) at android.os.Handler.handleCallback(Handler.java:973) at android.os.Handler.dispatchMessage(Handler.java:100) at android.os.Looper.loopOnce(Looper.java:282) at android.os.Looper.loop(Looper.java:387) at android.app.ActivityThread.main(ActivityThread.java:9500) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:600) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1005) Caused by: java.lang.RuntimeException: Cannot create an instance of class com.tplink.libtpnetwork.MeshNetwork.repository.MeshNetworkRepository at com.tplink.libtpnetwork.MeshNetwork.repository.base.MeshRepositoryProvider$MercusysRepositoryFactory.create(MeshRepositoryProvider.java:77) at com.tplink.libtpnetwork.MeshNetwork.repository.base.MeshRepositoryProvider.get(MeshRepositoryProvider.java:16) at com.tplink.libtpnetwork.MeshNetwork.repository.base.MeshRepositoryProvider.get(MeshRepositoryProvider.java:29) at com.tplink.libtpnetwork.MeshNetwork.repository.base.MeshRepositoryProviders.create(MeshRepositoryProviders.java:5) at com.tplink.mercusys.component.core.lifecycle.AppAutoConnectObserver.<init>(AppAutoConnectObserver.java:49) at com.tplink.mercusys.base.lifecycle.ApplicationStateReceiverDelegate.registerAutoConnectObserver(ApplicationStateReceiverDelegate.java:24) at com.tplink.mercusys.component.core.lifecycle.AppAutoConnectObserver.registerObserver(AppAutoConnectObserver.java:40) at com.tplink.mercusys.component.core.lifecycle.AppAutoConnectObserver.lambda$reconnectNetwork$6(AppAutoConnectObserver.java:5) at com.tplink.mercusys.component.core.lifecycle.AppAutoConnectObserver.$r8$lambda$0wm0luLOiA5Kpxus6DcbXQTe8mk(AppAutoConnectObserver.java:1) at com.tplink.mercusys.component.core.lifecycle.AppAutoConnectObserver$$ExternalSyntheticLambda10.run(R8$$SyntheticClass:3) at io.reactivex.internal.operators.observable.ObservableDoFinally$DoFinallyObserver.runFinally(ObservableDoFinally.java:11) ... 13 more Caused by: java.lang.reflect.InvocationTargetException at java.lang.reflect.Constructor.newInstance0(Native Method) at java.lang.reflect.Constructor.newInstance(Constructor.java:343) at com.tplink.libtpnetwork.MeshNetwork.repository.base.MeshRepositoryProvider$MercusysRepositoryFactory.create(MeshRepositoryProvider.java:21) ... 23 more Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'kg.b jg0.a.a()' on a null object reference at com.tplink.libtpnetwork.MeshNetwork.repository.MeshNetworkRepository.<init>(MeshNetworkRepository.java:51) ... 26 more
最新发布
11-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值