代码之家  ›  专栏  ›  技术社区  ›  alpert

发生错误时如何恢复通量元素

  •  0
  • alpert  · 技术社区  · 5 年前

    我有以下代码:

        Flux.fromIterable(List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11))
            .flatMap(integer -> {
                if (integer == 5) {
                    throw new RuntimeException("error");
                }
                return just(Tuples.of(integer, new Random().nextInt()));
            })
            .onErrorContinue((throwable, o) -> just(Tuples.of(o, 0)))
            .log()
            .subscribe();
    

    哪些产出:

    onSubscribe([Fuseable] FluxContextStart.ContextStartSubscriber)
    request(unbounded)
    onNext([1,-1752848133])
    onNext([2,-1719473285])
    onNext([3,819220275])
    onNext([4,-725013418])
    onNext([6,-1693809308])
    onNext([7,1457499883])
    onNext([8,-740589679])
    onNext([9,1718349574])
    onNext([10,-861794538])
    onNext([11,1016444064])
    onComplete()
    

    有没有办法让我恢复健康 5 使用默认值而不是删除它?

    0 回复  |  直到 5 年前
        1
  •  0
  •   Artem Bilan    5 年前

    看见 onErrorReturn() 和 onErrorResume() flatMap() 在内部 Mono 超过该值,以避免丢失原始文件的其余部分 Flux