gpt4 book ai didi

java - RxJava2 中的 onErrorReturn 仅捕获第一个错误

转载 作者:行者123 更新时间:2023-12-01 19:55:07 31 4
gpt4 key购买 nike

我在 flowable 中抛出了两个异常,并使用 onErrorReturn 来捕获这些异常。但我发现只捕获了第一个异常。如何捕获所有异常?

Flowable.create(emitter -> {
emitter.onError(new Exception("error1"));
emitter.onError(new Exception("error2"));
}, BackpressureStrategy.MISSING)
.onErrorReturn(e -> {
System.out.println("Got error " + e.getMessage());
return "error";
})
.subscribe();

输出:

Got error error1
io.reactivex.exceptions.UndeliverableException: java.lang.Exception: error2
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:349)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onError(FlowableCreate.java:271)
at com.example.springboottest.SimpleApplication.lambda$main$0(SimpleApplication.java:48)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72)
at io.reactivex.Flowable.subscribe(Flowable.java:13094)
at io.reactivex.internal.operators.flowable.FlowableOnErrorReturn.subscribeActual(FlowableOnErrorReturn.java:33)
at io.reactivex.Flowable.subscribe(Flowable.java:13094)
at io.reactivex.Flowable.subscribe(Flowable.java:13030)
at io.reactivex.Flowable.subscribe(Flowable.java:12890)
at com.example.springboottest.SimpleApplication.main(SimpleApplication.java:54)
Caused by: java.lang.Exception: error2
... 8 more
Exception in thread "main" io.reactivex.exceptions.UndeliverableException: java.lang.Exception: error2
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:349)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onError(FlowableCreate.java:271)
at com.example.springboottest.SimpleApplication.lambda$main$0(SimpleApplication.java:48)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:72)
at io.reactivex.Flowable.subscribe(Flowable.java:13094)
at io.reactivex.internal.operators.flowable.FlowableOnErrorReturn.subscribeActual(FlowableOnErrorReturn.java:33)
at io.reactivex.Flowable.subscribe(Flowable.java:13094)
at io.reactivex.Flowable.subscribe(Flowable.java:13030)
at io.reactivex.Flowable.subscribe(Flowable.java:12890)
at com.example.springboottest.SimpleApplication.main(SimpleApplication.java:54)
Caused by: java.lang.Exception: error2
... 8 more

最佳答案

Observable 在完成或遇到错误后结束。这是契约(Contract)的一部分,没有办法绕过该属性。

处理可观察对象中的“多个”异常的唯一方法是将其像值一样处理,而不是异常。这最终看起来像 Scala's Either construct在实践中。

关于java - RxJava2 中的 onErrorReturn 仅捕获第一个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49897284/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com