java - onErrorMap 和 onErrorContinue
问题描述
我正在学习使用 Flux/Mono 进行错误处理并遇到这个问题:
Flux.just("AAA", "BBB", "AAA", "CCC")
.map(s -> {
if (s.equals("AAA")) {
throw new IllegalArgumentException();
}
return s;
})
.map(s -> s + "-LOL")
.onErrorMap(IllegalArgumentException.class, cause -> new IllegalStateException())
.onErrorContinue(IllegalArgumentException.class, (e, a) -> System.out.println("Found IllegalArgumentException" + e))
.onErrorContinue(IllegalStateException.class, (e, a) -> System.out.println("Found IllegalStateException" + e))
.collectList()
.block();
我想要做的是将错误异常映射到另一个异常,然后我想以特定方式处理它。
在我的代码中,我看到它onErrorContinue
仅针对 触发IllegalArgumentException
,但我不明白为什么 - 我刚刚将错误映射到IllegalStateException
解决方案
如果您从反应式编程开始,我敦促您避免使用onErrorContinue
. 这是一个非常具有误导性的运算符,适用于非常了解运算符内部工作的高级用户。我很遗憾每次提到它时都添加它,并且正在考虑将它从公共 API 中隐藏得更多,因为它很容易被认为是简单的,例如。onErrorResume
.
考虑onErrorReturn
, onErrorResume
,doOnError
和subscribe(valueHandler, error -> doSomethingWithError(error))
代替。
推荐阅读
- python-3.x - 如何从python 3中的列表数组访问
- python - 检测csv python中的奇怪字符
- javascript - 在java脚本中转换为困难的数组对象
- java - Spring Boot - 多对多关系的分页与额外的列
- asp.net - 如何在水晶报表中删除数据库登录
- html - 在任何地方使用 html 中的 html 中的 pdf 打印项目
- bash - 使用 bash 脚本将内容写入文件
- excel - 在许多单元格上生成随机字符 VBA
- c++ - CPtrList->RemoveHead() 如何导致 CInvalidArgumentException?
- java - 将基于 Spring XML 的应用程序从 Jboss 迁移到 Tomcat 以在 pcf 中部署