RxJava:尝试将错误传播到 Observer.onError 时发生错误

2024-02-23

我在 Rx 库中收到 IllegalStateException 错误,并且不知道问题的根源在哪里,无论是 RxJava 还是我可能做错的事情。

当证书固定(发生在所有服务器请求上)但似乎指向会话超时或注销并返回时,会发生致命崩溃。重现步骤(发生大约 25% 的时间)如下:登录、打开列表项 - 滚动一路结束-注销-重新登录-打开应用程序-关闭应用程序->崩溃!

有人对如何防止这种情况有任何想法吗?我在这里发现了类似的问题Observer.onError 触发不一致 https://stackoverflow.com/questions/24860942/observer-onerror-firing-off-inconsistently

java.lang.IllegalStateException: Fatal Exception thrown on Scheduler.Worker thread.
   at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:62)
   at android.os.Handler.handleCallback(Handler.java:615)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4867)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
   at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: rx.exceptions.OnErrorFailedException: Error occurred when trying to propagate error to Observer.onError
   at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:201)
   at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:111)
   at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:159)
   at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
   at android.os.Handler.handleCallback(Handler.java:615)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4867)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
   at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: rx.exceptions.CompositeException: 2 exceptions occurred. 
   at rx.observers.SafeSubscriber._onError(SafeSubscriber.java:201)
   at rx.observers.SafeSubscriber.onError(SafeSubscriber.java:111)
   at rx.internal.operators.OperatorObserveOn$ObserveOnSubscriber$2.call(OperatorObserveOn.java:159)
   at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
   at android.os.Handler.handleCallback(Handler.java:615)
   at android.os.Handler.dispatchMessage(Handler.java:92)
   at android.os.Looper.loop(Looper.java:137)
   at android.app.ActivityThread.main(ActivityThread.java:4867)
   at java.lang.reflect.Method.invokeNative(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:511)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
   at dalvik.system.NativeStart.main(NativeStart.java)
Caused by: rx.exceptions.CompositeException$CompositeExceptionCausalChain: Chain of Causes for CompositeException In Order Received =>
   at com.crashlytics.android.SessionDataWriter.getEventAppExecutionExceptionSize(SessionDataWriter.java:597)
   at com.crashlytics.android.SessionDataWriter.getEventAppExecutionExceptionSize(SessionDataWriter.java:600)
   at com.crashlytics.android.SessionDataWriter.getEventAppExecutionExceptionSize(SessionDataWriter.java:600)
   at com.crashlytics.android.SessionDataWriter.getEventAppExecutionSize(SessionDataWriter.java:533)
   at com.crashlytics.android.SessionDataWriter.getEventAppSize(SessionDataWriter.java:492)
   at com.crashlytics.android.CrashlyticsUncaughtExceptionHandler.writeSessionEvent(CrashlyticsUncaughtExceptionHandler.java:956)
   at com.crashlytics.android.CrashlyticsUncaughtExceptionHandler.access$200(CrashlyticsUncaughtExceptionHandler.java:56)
   at com.crashlytics.android.CrashlyticsUncaughtExceptionHandler$7.call(CrashlyticsUncaughtExceptionHandler.java:274)
   at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
   at java.util.concurrent.FutureTask.run(FutureTask.java:137)
   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
   at io.fabric.sdk.android.services.common.ExecutorUtils$1$1.onRun(ExecutorUtils.java:58)
   at io.fabric.sdk.android.services.common.BackgroundPriorityRunnable.run(BackgroundPriorityRunnable.java:13)
   at java.lang.Thread.run(Thread.java:856)

发生的事情是你的onError实施在Subscriber抛出一个未经检查的异常,这违反了 Observable 合约,这会中止 observable 处理并抛出一个OnErrorFailedException in the observeOn调度程序。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RxJava:尝试将错误传播到 Observer.onError 时发生错误 的相关文章

随机推荐

  • 使用 Logback 但 Log4j 开始显示 WARN no Appenders

    我正在使用 logback 进行日志记录 但它一直在工作 前几天我开始收到警告 log4j WARN 找不到记录器 org apache axis i18n ProjectResourceBundle 的附加程序 log4j WARN 请正
  • 在 Flutter 中制作固定的应用程序范围菜单,而不是平板电脑上的抽屉

    我的应用程序有很多路线 几乎每条路线都使用带有相同抽屉菜单的 Scaffold 在应用程序内部导航 我自己的 CustomDrawer 小部件 对于大屏幕的设备 我希望始终在布局中显示左侧的菜单 而不是使用抽屉 它在Gmail应用程序中的工
  • 使用 Erlang,我应该如何在集群之间分配负载?

    我正在查看从属 池模块 它看起来与我的类似 想要 但似乎我的系统中存在单点故障 应用程序 如果主节点出现故障 客户端有一个网关列表 为了后备 全部都做 相同的东西 接受连接 并且从其中选择一个 由客户随机 当客户端连接所有节点时 检查哪个负
  • 在 Windows 上优雅地终止子 Python 进程,以便 Final 子句运行

    在 Windows 机器上 我有许多父进程将启动子进程的场景 由于各种原因 父进程可能想要中止子进程但是 这很重要 让它清理 即运行finally子句 try res bookResource doStuff res finally cle
  • 在 Erlang 中使用 mochijson2 解码 JSON

    我有一个包含一些 JSON 数据的 var A lt lt job id 1 gt gt 使用 mochijson2 我解码数据 Struct mochijson2 decode A 现在我有这个 struct lt lt job gt g
  • 使用 lambda 函数在 pandas group 中聚合

    我有一个聚合声明如下 data data groupby type status name agg one np mean two lambda value 100 value gt 32 sum reading mean test2 la
  • 如何将多个正则表达式组合成一行?

    我的脚本可以很好地执行此操作 images re findall src S media tumblr S tumblr S jpg doc videos re findall S http S video file S tumblr a
  • JavaScript 中的条形码扫描仪?或者插件/扩展

    我正在考虑将 USB 条形码扫描仪接口写入 Web 应用程序 离线应用程序 我的意思是扫描仪将位于客户端计算机而不是服务器上 所以我想知道最好的设计是什么 我知道我可以将 ActiveX 对象或本机插件写入某些浏览器 但这并不理想 有谁知道
  • 如何自动运行 ulimit -c unlimited

    我正在尝试从我的rootfs提供对coredump文件生成的支持 我已经使用 ulimit c unlimited 命令和 hard core 1 修改了 etc limits文件 现在当我给出kill 6 时 期望生成核心文件 但要获取此
  • 通过 REST 进行客户端-服务器同步

    这个问题是关于我认为 Android iOS 开发中非常常见的问题 但我还没有找到任何 标准 解决方案 假设我们有一个相当普通的 REST API 服务器数据库包含 除其他外 表countries and towns具有 1 N 关系 客户
  • CSS Masonry UI 使用“column-count”和“box-shadow”无法正常工作

    下面是我的代码砌体用户界面 我用的是纯CSS 如果有超过4 cards但如果我在下面使用它4 cards the column count 3 效果不佳 body height 1000px ul list style none moz c
  • shell中多个文件的平均值

    我想计算 15 个文件的平均值 ifile1 txt ifile2 txt ifile15 txt 每个文件的列数和行数相同 部分数据看起来像 ifile1 txt ifile2 txt ifile3 txt 3 5 2 2 1 2 1 3
  • 如何在Apple App Store产品描述中显示特殊字符?

    我发现一些应用程序 例如 Toodledo 使用复选标记来标记其修订历史记录 如何在 App Store 产品描述中显示 使用特殊字符 它允许 HTML 还是只需要使用 ascii 字符代码 有什么提示 技巧可以更好地展示我们应用程序的产品
  • 如何在 jqGrid 上实现自动换行(适用于 IE7、IE8 和 FF)

    如何在适用于 IE7 IE8 和 FF 的 jqGrid 上实现自动换行 同时还具有列大小调整功能 网格正确对齐 尝试使用特定宽度的 div 基于初始 TH 宽度 内包装每个 td 上的内容 但 colresize 不适用于我插入的 div
  • java.util.List 是可变的吗?

    我们可以add remove元素到List using add remove 方法而无需创建另一个看起来类似于的列表StringBuilder append 正因如此我认为List是可变的 谁能确认我的理解是正确的吗 如果有错误请解释一下下
  • PHP 忽略 POST 请求

    我正在尝试在 PHP 中创建一个即发即忘方法 以便我可以POST数据发送到网络服务器 无需等待响应 我读到这可以通过使用来实现CURL就像下面的代码一样 ch curl init url curl setopt ch CURLOPT POS
  • Postgres/hibernate 运算符不存在:text = bytea

    我是 hibernate 世界的新手 在尝试使用 hibernate 和 postgres 执行查询时收到以下错误消息 org postgresql util PSQLException ERROR operator does not ex
  • 是否有用于 Tkinter/网格几何图形的 GUI 设计应用程序? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 GUI 设计应用程序可以让您选择 拖 放小部件 然后使用适当的 Tkinter 调用和排列将
  • 如何在golang中使用multipart

    我需要生成以下形式的多部分发布请求 POST blabla HTTP 1 1 Host 2 2 2 2 Authorization moreblabla Content Type multipart mixed boundary rs0q5
  • RxJava:尝试将错误传播到 Observer.onError 时发生错误

    我在 Rx 库中收到 IllegalStateException 错误 并且不知道问题的根源在哪里 无论是 RxJava 还是我可能做错的事情 当证书固定 发生在所有服务器请求上 但似乎指向会话超时或注销并返回时 会发生致命崩溃 重现步骤