log什么方法在React链中出现异常

dwthyt8l  于 2021-06-29  发布在  Java
关注(0)|答案(1)|浏览(406)

我的React链中有一些方法可以抛出异常。如果发生异常-我不想继续执行链,我想记录-是什么操作引发了异常。
我写了一个代码,看起来像这样:

Mono<Void> mono = Mono.just(10)
            .map(a -> action1(a))
            .doOnError((t) -> System.out.println("action 1 threw an exception"))
            .onErrorStop()
            .map(a -> action2(a)) 
            .doOnError((t) -> System.out.println("action 2 threw an exception"))
            .then();

    mono.subscribe();

但是什么时候 action1 抛出异常-我得到以下输出:

action 1 threw an exception
action 2 threw an exception

什么不是我所期望的

fafcakar

fafcakar1#

你需要把React链看作一个流水线或一个数据流,在流水线中,错误也是一个和其他数据一样的数据。
这个 flatMap() 方法改变信号到另一个(单声道或通量)当数据可用。

Mono<Void> mono = Mono.just(10)
                .map(a -> action1(a))
                .doOnError((t) -> System.out.println("action 1 threw an exception"))
                .flatMap(a -> Mono.just(a)
                        .map(value -> action2(value))
                        .doOnError((t) -> System.out.println("action 2 threw an exception"))
                        .then()
                )
                .then();
        mono.subscribe();

相关问题