RxJava 出错后如何继续流式传输项目?

2024-02-24

我是 RxJava 新手,我遇到了以下问题。 假设我有一系列项目,并且其中一个项目传播错误,我想忽略它并继续处理其他项目。

我有以下片段:

    Observable.from(Arrays.asList("1", "2", "3"))
            .map(x -> {
                if (x.equals("2")) {
                    throw new NullPointerException();
                }
                return x + "-";
            })
            .onExceptionResumeNext(Observable.empty())
            .subscribe(System.out::println);

我得到:1-

但我想得到: 1- , 3-

我怎样才能做到这一点?


诀窍是将值(将以某种方式转换)包装成新的可观察值并覆盖它的平面图,如下例所示。 flatMap 中的每个值现在都可以抛出异常并按值进行处理。由于 flatMap 中的子流仅包含一个元素,因此 onError 后是否关闭 observable 并不重要。我使用 RxJava2 作为测试环境。

@Test
public void name() throws Exception {
    Observable<String> stringObservable = Observable.fromArray("1", "2", "3")
            .flatMap(x -> {
                return Observable.defer(() -> {
                    try {
                        if (x.equals("2")) {
                            throw new NullPointerException();
                        }
                        return Observable.just(x + "-");
                    } catch (Exception ex) {
                        return Observable.error(ex);
                    }
                }).map(s -> {
                    if (s.equals("3-")) {
                        throw new IllegalArgumentException();
                    }
                    return s + s;
                }).take(1)
                        .zipWith(Observable.just("X"), (s, s2) -> s + s2)
                        .onErrorResumeNext(Observable.empty());
            });

    TestObserver<String> test = stringObservable.test();

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

RxJava 出错后如何继续流式传输项目? 的相关文章

  • 如何在java中压缩/解压tar.gz文件

    谁能告诉我在java中压缩和解压缩tar gzip文件的正确方法我一直在搜索 但我能找到的最多的是zip或gzip 单独 我写了一个包装器公共压缩 http commons apache org compress called jarchi
  • 如何降低圈复杂度?

    我正在开发一个将 RequestDTO 发送到 Web 服务的类 我需要在发送请求之前验证该请求 请求可以从 3 个不同的地方发送 并且每个 请求类型 有不同的验证规则 例如请求1必须有姓名和电话号码 请求2必须有地址等 我有一个 DTO
  • 在哈希图中存储字符和二进制数

    我正在尝试存储字母到二进制数的映射 这是我的映射 h 001 i 010 k 011 l 100 r 101 s 110 t 111 为此 我创建了一个哈希映射并存储了键值对 我现在想显示给定句子的相应二进制值 这是我的代码 package
  • 如何在数据库中对 (Java) 枚举进行建模(使用 SQL92)

    您好 我正在使用名为 性别 的列对实体进行建模 在应用程序代码中 性别应该是一个 Java 枚举类型 有 2 个值 男性和女性 知道作为数据类型的枚举不是通用 SQL 语言 92 的一部分 您将如何建模它 数据模型必须是可移植的 以便由多个
  • 在 Android 中绘制一条带有弯曲边缘的线

    I am using canvas drawLine to draw some line in android but the lines are too sharp but i need a curved edges 这里的 1 是我所拥
  • 从剪贴板获取图像 Awt 与 FX

    最近 我们的 Java FX 应用程序无法再从剪贴板读取图像 例如 用户在 Microsofts Paint 中选择图像的一部分并按复制 我不是在谈论复制的图像文件 它们工作得很好 我很确定它过去已经有效 但我仍然需要验证这一点 尽管如此
  • 代码编译期间遇到警告消息“使用或覆盖已弃用的 API”

    我编译了我的程序并收到以下错误 我该如何解决呢 Note ClientThreadClients java uses or overrides a deprecated API Note Recompile with Xlint depre
  • 动画图像视图

    目前我正在开发一款游戏 这是我的游戏的详细信息 用户应选择正确的图像对象 我希望图像从左到右加速 当他们到达终点时 他们应该再次出现在活动中 这是我正在处理的屏幕截图 我有 5 个图像视图 它们应该会加速 您有此类动画的示例代码吗 非常感谢
  • Hystrix是否可以订阅CircuitBreaker开启事件?

    对于单元测试 我希望能够订阅 Hystrix 事件 特别是在断路器打开或关闭时发生事件 我四处寻找示例 似乎解决方法是利用指标流并监视断路器标志 由于 Hystrix 是基于 RxJava 构建的 我认为应该在某个地方有一个事件订阅接口 在
  • 无法在 Mac OS X 上启动应用程序 我收到错误 LSOpenURLsWithRole() 应用程序失败,错误为 -10810

    问题 我正在尝试启动一个应用程序 遗传网络分析仪 http www genostar com category products gna 但它默默地失败了 使用时open gna app产生以下错误消息 LSOpenURLsWithRole
  • 如何在命令提示符中检查 JAVA_OPTS 值?

    我们的应用程序部署 JBoss 服务器然后抛出错误 PermGen space 然后在 jboss bat 和配置文件中设置 permgen 变量中的 java OPTS JAVA OPTs 中是否有值 assige 如何检查 如何在命令提
  • 如何将txt文件添加到你的android项目中? [复制]

    这个问题在这里已经有答案了 我的Android studio版本是1 5 1 显然这个 never 版本没有 txt 文件的 asset 文件夹 您打算如何将这些文件包含到您的项目中 以及如何进一步使用您内部的应用程序 谢谢你的建议 Pro
  • Java 中 static 关键字如何工作?

    我正在阅读Java教程 http docs oracle com javase tutorial index html从一开始我就有一个问题static字段或变量上的关键字 作为Java said here http docs oracle
  • C++ 中的 Java ArrayList [重复]

    这个问题在这里已经有答案了 在Java中我可以做 List
  • 为什么 RMI 注册表忽略 java.rmi.server.codebase 属性

    我正在运行 java RMI 的 Hello World 示例 1 我在空文件夹中运行注册表 motta motta laptop tmp rmiregistry 2 我启动 HTTP 服务器以在运行时检索类 下载文件夹包含客户端 服务器的
  • 无法仅在控制台中启动 androidstudio

    你好 我的问题是下一个 我下载了Android Studio如果我去 路径 android studio bin 我执行studio sh 我收到以下错误 No JDK found Please validate either STUDIO
  • 如何使用 Hibernate Session.doWork(...) 进行保存点/嵌套事务?

    我正在使用 JavaEE JPA 托管事务与 Oracle DB 和 Hibernate 并且需要实现某种嵌套事务 据我所知 此类事情不受开箱即用的支持 但我应该能够为此目的使用保存点 正如建议的https stackoverflow co
  • 使用 Cucumber Scenario Outline 处理 Excel 电子表格

    如果可能的话 我试图找到一种更优雅的方法来处理从与 Excel 电子表格行 第 n 个 相关的 Cucumber Scenario Outline 中调用第 n 个数字 目前 我正在使用迭代编号来定义要从中提取数据的 Excel 电子表格的
  • java中wav文件转换为字节数组

    我的项目是 阿塞拜疆语音的语音识别 我必须编写一个程序来转换wav文件到字节数组 如何将音频文件转换为byte 基本上如第一个答案中的片段所描述 但不是BufferedInputStream use AudioSystem getAudio
  • 如何使用maven创建基于spring的可执行jar?

    我有一个基于 Maven 的 Spring WS 客户端项目 我想将其打包为单个 jar 在eclipse中 一切运行正常 当我尝试将其打包为可执行 jar 时 我收到 ClassNotFound 异常 因为 Spring jar 未包含在

随机推荐

  • 使用 Java 进行 MongoDB ISODate 字段搜索

    我在使用 Java 搜索 mongodb 中的 ISODate 字段时遇到问题 我想找到完全匹配的日期 以下是我查询第一个集合并获取 ISODate 字段 Timestamp 的方法 一旦我得到这个日期 我想搜索具有相同 时间戳 值的另一个
  • FxCop 和代码分析规则

    我最近开始在 Visual Studio 中的项目中使用代码分析 我创建了一个自定义规则集 用于我的所有项目 其中包括两个 Microsoft 定义的规则集 我一直致力于将 FxCop 集成到 CI 构建过程中 以使未通过所有规则的构建失败
  • 我如何使用 Rugged 来创建和提交文件,就像从命令行一样?

    我正在尝试使用坚固的东西来做一些非常简单的事情 创建并提交一个文件 使存储库处于与执行相同的状态 git init echo blah blah blah gt blah txt git add blah txt git commit m
  • 围绕三角形画布旋转圆

    我想使用画布围绕三角形旋转一个圆 前面有这段代码 但这是中间的圆 还有一个旋转的矩形 我希望圆旋转并在中间有一个三角形 有人可以帮忙吗 这是我的JS代码 var canvas document getElementById canvas v
  • 如何正确使用run_in_executor?

    我尝试使用run in executor并有一些问题 这是代码 基本上是从文档复制粘贴 import asyncio import concurrent futures def cpu bound val CPU bound operati
  • Yii 将数据从一个模型复制到另一个模型

    我是 yii 的新手 我使用扩展的模型从表单中收集数据CFormModel在控制器内部我想将这些数据复制到一个扩展自的模型CActiveRecord为了保存到数据库 是否有一种方法或方式将数据从数据收集模型复制到数据保存模型 而不是通过属性
  • pythonw.exe 还是 python.exe?

    长话短说 pythonw exe什么也没做 python exe不接受任何内容 我应该使用哪一个 test py print a 命令窗口 C path gt pythonw exe test py
  • 了解addChildViewController的使用

    我正在处理一些需要重构的代码 视图控制器充当其他两个视图控制器的容器 并将在它们之间交换 如下面的代码所示 这可能不是最好的设计 可能不需要以这种方式交换视图控制器 我明白那个 但是 当我使用此代码时 我想进一步了解 addChildVie
  • file_exist 放置在 php 函数内时不起作用

    我已经寻找过几乎类似的问题但这些都没有给我正确的答案 我有一个完全workingif else 语句中的 file exist 代码在这里 但是当我将它放在一个函数中时它就不再起作用了 这是代码 if file exists SERVER
  • Python:打开文件而不创建锁

    我正在尝试用 Python 创建一个脚本来备份一些文件 但是 这些文件可以随时重命名或删除 我不希望我的脚本通过锁定文件来阻止这种情况 在备份过程中 该文件应该仍然可以随时删除 我怎样才能在Python中做到这一点 而且 会发生什么 如果无
  • 如何使用隐藏代码创建自定义注释

    我想创建我自己的自定义注释 我的框架是独立的 Java 应用程序 当有人注释他的 pojo 类时 后面的 隐藏 代码将触发方法 例如 今天在 Java EE 中我们有 MessageDriven注解 当你用注释你的类时 MessageDri
  • 模拟 Pylons 中的 url 对象

    我想测试一个调用 pylons url 对象的方法 然而在测试中调用它会导致错误 TypeError No object name url has been registered for this thread 所以我想用模拟库中的模拟替换
  • Elasticsearch java 客户端初始化失败

    我在尝试运行连接到 elasticsearch 的应用程序时收到此错误消息 An attempt was made to call the method org elasticsearch client RestHighLevelClien
  • Eclipse中如何根据字段注释自动生成getter/setter注释?

    我希望 Eclipse 根据先前定义的字段注释自动为我的 getter 和 setter 方法生成 Javadoc 注释 我怎样才能实现这个目标 背景 我们公司的一项政策是对每个方法和字段进行注释 即使它们具有不言自明的名称 因此 我必须通
  • 在Python中,如何计算两个数据数组之间的相关性和统计显着性?

    我有一组包含两个同样长的数据数组的数据 或者我可以创建一个包含两项条目的数组 并且我想计算数据所代表的相关性和统计显着性 可能是紧密相关的 或者可能有没有统计学上显着的相关性 我正在用 Python 编程 并安装了 scipy 和 nump
  • 创建等腰梯形形状

    我想知道是否可以用 CSS 生成类似的东西 我也想知道 这是提出这样问题的合适地方吗 我没有尝试过任何代码 我已经用 Photoshop 完成了棕色图像 谢谢你的帮助 这个形状 一个等腰梯形 http en wikipedia org wi
  • 如何在c中将数组的值分配给另一个数组(制作副本)?

    我想复制二维数组并将其分配给另一个数组 在Python中我会做这样的事情 grid a b c d e f g h i grid copy grid 我想在 C 中做同样的事情 char grid 3 3 a b c d e f g h i
  • 我可以预期的多线程“现实世界”性能改进是什么?

    我正在编写一个具有多个分支的递归树搜索并且工作正常 为了加快速度 我正在实现一个简单的多线程 我将搜索分布到主分支中并将它们分散在线程中 每个线程不必与其他线程交互 当找到解决方案时 我将其添加到公共线程中std 向量以这种方式使用互斥体
  • Python super() 参数:为什么不是 super(obj)?

    我试图了解何时以及如何在 Python 中正确使用 super 2 7 x 或 3 x on gt gt gt help super 解释器告诉我如何称呼它 class super object super type gt unbound
  • RxJava 出错后如何继续流式传输项目?

    我是 RxJava 新手 我遇到了以下问题 假设我有一系列项目 并且其中一个项目传播错误 我想忽略它并继续处理其他项目 我有以下片段 Observable from Arrays asList 1 2 3 map x gt if x equ