android - RxJavaErrorHandler 能否防止错误导致 Android 应用程序崩溃?

标签 android rx-java

我试图用 RX 插件抑制错误,但应用程序仍然崩溃。我是不是做错了什么,或者插件错误处理程序只是为了报告而不能防止崩溃?

    public void testClick(View view) {
    RxJavaPlugins.getInstance().registerErrorHandler(new RxJavaErrorHandler() {
        @Override
        public void handleError(Throwable e) {
            e.printStackTrace();
        }
    });

    final PublishSubject<Integer> hot = PublishSubject.create();
    hot
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(new Action1<Integer>() {
                @Override
                public void call(Integer value) {
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    logger.info("Result");
                }
            });
    Observable.range(0, 100).subscribe(hot);
}

最佳答案

如果您查看 SafeSubscriber 类中的 _onError 方法,您会发现:

try {
    RxJavaPlugins.getInstance().getErrorHandler().handleError(e);
} catch (Throwable pluginException) {
    handlePluginException(pluginException);
}
try {
    actual.onError(e);
} catch {
    ...
}

你可以看到 RxJavaPlugins ErrorHandler 不影响进一步的错误处理,它应该被用来记录/报告错误

关于android - RxJavaErrorHandler 能否防止错误导致 Android 应用程序崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29524517/

相关文章:

rx-java - 为什么不支持背压的 Observable 在收到请求通知时会不断发出数据项?

java - 如何让异步任务在 Android 中完成

java - 如何让倒计时进度条不断向下?

android - fragment 订阅观察者

java - Android 上 rxjava 的默认调度器

java - Java RX 中可通过缓冲区和多个值更新进行观察?

unit-testing - 如何创建 Single.just(Void)

android - 单独的 Android SDK for Unity 项目?

android - 媒体查询未在 Ipad 应用程序上显示任何输出

Android 联系人选择器获取姓名 + 号码 + 电子邮件