Observer.onError 触发不一致

2023-12-26

我正在使用 Retrofit 访问我的 API,如下所示:

public interface UserService {
    ...
    @POST("/user/login")
    public Observable<User> register(@Body() User user);
}

以下是我访问 API 的方式:

mUserService.register(user)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<User>() {
    @Override
    public void onCompleted() {
    ....
    }

    @Override
    public void onError(Throwable e) {
    ....
    }

    @Override
    public void onNext(User user) {
    ....
    }
});

这工作得很好,除非出现异常(即 IOException 或连接超时), onError 方法不会被触发,而是在主线程上收到一个异常,该异常终止了我的应用程序。

但是,对于某些情况(例如,当 API 调用响应状态代码为 400 时),onError 方法会按预期触发。

在挖掘 logcat 输出后,我发现了这一行,(不知道我应该如何处理它)

rx.exceptions.OnErrorFailedException:尝试将错误传播到 Observer.onError 时发生错误

有人可以让我知道我哪里做错了吗?


根据我之前使用 RxJava 的经验OnErrorFailedException表示在处理另一个异常时发生了异常onError method.

如果您没有看到真正原因的堆栈跟踪,则可能是由于 RxJava 中的错误所致CompositeException(0.19.2及以上版本)https://github.com/Netflix/RxJava/issues/1405 https://github.com/Netflix/RxJava/issues/1405

作为解决方法,请尝试包装您的onError内的代码try-catch阻止并记录异常。这样你就会看到你的问题出在哪里onError实施,你就能解决问题。

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

Observer.onError 触发不一致 的相关文章

  • 单击 RecyclerView 内的 ImageView 时更改图像资源

    每当我单击它时 单击图像 而不是项目 我都会尝试更改回收器视图内特定位置的设备图像资源 我尝试将 setOnClickListener 放入 onBindViewHolder 方法中 但只有最后一个项目受到影响 这是我的回收者视图 http
  • 我可以在 firebase android 中加载另一个用户个人资料图像吗?

    如果我有其他用户的电子邮件但我以其他用户身份登录 我是否可以加载其他用户的个人资料图像 如果您使用 Firebase Storage 那么从技术上讲是的 它只是一个您可以从中检索任何文件的文件系统 如果不伪造您的应用程序 获取 api 密钥
  • 应用程序实例是否始终在任何活动之前创建?

    在 Android 中 您可以通过扩展 Application 类并在 Manifest 中声明名称来提供您自己的 Application 类实现 我的问题是 这个实现是否总是在初始活动之前创建 或者活动可以在应用程序实例有时间创建之前启动
  • 如何使用 adb 在设备上安装现有的 Android 应用程序?

    在开发过程中 我使用类似的东西 adb s 192 168 1 77 5555 uninstall com myApp app adb s 192 168 1 77 5555 install path to android debug ap
  • Google Firebase - 如何删除崩溃报告?

    我最终失明了吗 还是没有明显的方法可以通过 Google Firebase Web 控制台删除 Firebase 崩溃报告 我的 Android 应用程序已成功记录报告 但现在出现大量 开发崩溃 占用了我在控制台中的大部分视图 这使得找到实
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 按钮未显示在屏幕上

    我创建了一个应用程序 其中显示带有图像和文本的列表视图 我在页面末尾添加按钮 但这没有显示在屏幕上 我是 Android 新手 我该如何解决这个问题 这是我的 UI XML 代码
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • 如何在 Android 上创建 YouTube 的双击手势?

    我在 Android 上有 exoplayer 的应用程序 我已经创建了 youtube双击手势用动画向前或向后跳跃 10 秒 如何在双击时创建具有波纹效果的半圆 像这样 这个怎么做 我也想实现这样的功能 所以我自己编写了它来 复制 You
  • 使用 Android 播放任意音调

    有没有办法让Android发出任意频率的声音 意思是 我不想预先录制声音文件 我环顾四周 音调发生器 http developer android com reference android media ToneGenerator html
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • 如何从android获取应用程序安装时间

    我尝试了一些方法 但没有成功 请帮助我 PackageManager pm context getPackageManager ApplicationInfo appInfo pm getApplicationInfo app packag
  • 加快 ImageView 中的缩放功能

    我目前正在处理非常大的图像 7 10mb 由于多种原因无法调整大小或压缩 现在 我们的想法是在自定义 ImageView 中显示它们 使用户能够进行双击缩放 捏合缩放等 我使用这个库来完成这项工作 https github com Mike
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • android 中camera.setParameters 失败

    我已将相机功能包含在我的应用程序中 我还在市场上推出了该应用程序 我从一位用户那里收到一条错误消息 称他在打开相机时遇到错误 我已经在 2 1 的设备上测试了该应用程序 我从用户那里得到的错误是使用 Nexus One 它主要运行 2 2
  • 使用嵌套的 hashmap 参数发送 volley 请求

    我正在使用 android volley 框架向我的服务器发送 jsonobject 请求 get 请求工作正常 现在我想发送一个带有请求参数的 post 请求 该请求参数是嵌套的 hashmap 我重写 getparams 方法 但它期望
  • 在 Android 中上传文件出现内存不足错误

    我的上传代码如下 String end r n String twoHyphens String boundary try URL url new URL ActionUrl HttpURLConnection con HttpURLCon
  • android:layout_alignParentBottom 在没有显式布局高度作为 ListView 中的行的情况下使用时会被忽略

    当我使用RelativeLayout与任一fill parent or wrap content作为高度和一个指定的元素 android layout alignParentBottom true 它被忽略并在顶部对齐 设置高度Relati
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • putFragment() - 片段 x 当前不在 FragmentManager 中

    上面的标题被问了很多次 但答案似乎与FragmentStatePagerAdapter这与我的问题无关 我正在使用该方法putFragment Bundle String Fragment 直接地 The 安卓文档 http develop

随机推荐

  • 在 goroutine 中使用 exec.CommandContext 时如何调用 cancel()

    我想按需取消正在运行的命令 为此 我正在尝试 exec CommandContext https golang org pkg os exec CommandContext 目前正在尝试这个 https play golang org p
  • 有没有办法在 Vitejs 中的 React 项目中使用 PostCSS 来混淆 TailwindCSS 类名?

    目前正在使用 ViteJs 构建 React 项目 该项目使用 TailwindCSS 和 PostCSS 我希望在生产版本中混淆顺风类名 喜欢object cover to a2 另外 我的目标不是缩小 我尝试寻找解决方案 但没有运气 这
  • 使用 MigrationHistory 检测实体框架模型对于数据库是否太旧

    我们从手动编码数据库迁移转向代码优先的实体框架迁移 在我们的旧设置中 我们能够检查数据库是否太新 这很重要 因为它可能不兼容 不幸的是 我找不到一个好的方法来检查当前数据库的最新程度或是否太旧 用例是客户的计算机上有我们软件的 2 个版本
  • 自动找出 f# 中的函数名称

    如果我有一个属于模块一部分的函数 并且我想要在函数内部有一个日志条目 我必须手动打印函数名称空间和名称 例如 namespace MyModuleNamespace module MyModule let AddTwoNums logger
  • 我应该授权哪个 URL 在防火墙后面使用 pip?

    我有一台服务器 我想在其上使用 Python 该服务器位于公司防火墙后面 我不想搞乱它 我唯一能做的就是为特定的 URL 域设置防火墙例外 我还想使用 pip 或 easy install 访问 PYPI 上的包 因此 您知道除了 pypi
  • DOS批处理脚本转换字符串2十六进制

    如何在 DOS 批处理脚本中将字符串转换为十六进制 例如 将 abcd 转换为 61626364 因为 a 是 0x61 我尝试从网络上寻找解决方案 一天 但找不到我的答案 echo off setlocal EnableDelayedEx
  • 准备继续查看控制器时发生致命错误

    我目前正在得到一个解包可选值时意外发现致命错误在 destViewController titleLabel text 测试 Segue 由于当它转向 Seconds ViewController 时出现错误 我该如何修复它 如何避免在 t
  • gson json解析器:没有键的值

    我想解析这样的 json 结构 response arr1 count arr2 count 如果 count 有键 count 例如 则一切正常 但钥匙是空白的 有什么方法可以映射此结构并仅手动检索此值 或者我需要自己在没有 gson 的
  • yii2 登录重定向后丢失用户身份

    我看过其他类似的问题 而这个问题 页面重定向后 Yii2 用户身份丢失 https stackoverflow com questions 27738175 yii2 user identity loss after page redire
  • 如何创建一个基于文本内容动态宽度的div框? [复制]

    这个问题在这里已经有答案了 我想创建一个简单的div根据所包含的内容缩小和扩展 https jsfiddle net qa5dr0x8 https jsfiddle net qa5dr0x8 div style border 1px sol
  • 如何在 Eclipse 中关闭制表符和换行符标记?

    我正在使用 Adob e 的 ColdFusion Builder 这是一个构建在 Aptana 之上的基于 Eclipse 的 IDE 突然间 我的 Eclipse 编辑器中显示了一种空白标记 我一定是不小心按下了组合键 这是一个屏幕转储
  • 枚举 Delphi 中已发布的属性和子属性

    如果之前问过这个问题 我们深表歉意 我对一些组件的定义如下 如果错误请指导我 因为我是初学者 我正在尝试的是枚举派生组件的所有已发布属性 特别是子属性 我能够枚举属性的名称 但是 是否可以枚举在程序执行期间可以访问其元素 如子属性 的已发布
  • 如何验证字符串是否是js中的有效日期[重复]

    这个问题在这里已经有答案了 我有用于获取不同值的字符串字段 收到的一些值是日期 现在我需要检查收到的值是否是日期 收到的日期可以再次采用不同的格式 I tried Date parse 如果格式为dd mm yyyy hh mm 但我收到了
  • Android Studio中Toolbar必须用AppBarLayout包裹吗?

    代码A来自项目建筑样本 https github com android architecture samples 工具栏被 AppBarLayout 包裹 我删除 AppBarLayout 并获得代码 B 代码 B 与代码 A 一样运行良
  • Flutter:一页上有两 (2) 个抽屉?

    我有一个顶部栏 左侧 设置 和右侧 配置文件 都有图标 我需要一个抽屉 根据单击的图标从左侧或右侧滑出 我的左侧 设置 工作正常 但我不明白如何在一页上有两个抽屉 我相信拥有两个抽屉比根据所选链接以编程方式编辑抽屉更有意义 但我以前也经常犯
  • GestureDetector.onTouchEvent(MotionEvent e) 在所有手势上调用 onLongPress

    我有一个自定义视图 我想在其上设置长按监听器 我正在使用以下代码来设置相同的内容 final GestureDetector gestureDetector new GestureDetector new GestureDetector S
  • Html.HiddenFor 在 ASP.NET 中错误地格式化 DateTime

    我正在用 C 编写 ASP NET MVC3 应用程序 并发现调用Html HiddenFor在我看来会呈现DateTime与我打电话时不同 且错误 Html DisplayFor 它从中获取值的模型确实有一个 DisplayFormat
  • Linq to SQL 的未来是什么

    我一直在网上搜索 Linq 教程 发现一些文章说 linq 可能会消失 你对此有什么看法 微软真的会废除linq吗 Linq to SQL 并没有像实体框架那样受到足够多的关注来发展其功能 MS 已决定追求丰富 发展 EF 对于 L2S 这
  • 为什么在 UI 中使用 DataTable 是错误的?

    我是初学者 我发现很难理解这里的一个概念 有人告诉我不应该在 UI 级别使用 DataTable 请帮助我理解这个概念 解决方案 MyApp Data MyApp Logic MyApp Web MyApp Web 引用 MyApp Log
  • Observer.onError 触发不一致

    我正在使用 Retrofit 访问我的 API 如下所示 public interface UserService POST user login public Observable