簡體   English   中英

RxJava2中的onErrorReturn僅捕獲了第一個錯誤

[英]onErrorReturn in RxJava2 only caught the first error

我在可流動對象中拋出了兩個異常,並使用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在完成或遇到錯誤后結束。 這是合同的一部分,沒有辦法解決該財產。

您可以在可觀察對象中處理“多個”異常的唯一方法是,是否像值一樣處理它,而不是異常。 在實踐中,這最終看起來像Scala的Either構造

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM