项目React器中的错误处理-重试时异常意外传播

bakd9h0s  于 2021-08-25  发布在  Java
关注(0)|答案(0)|浏览(261)

在项目React堆中,以下行为的原因是什么?
如果我有序列,

Retry
        .anyOf( IOException.class )
        .retryMax( Long.MAX_VALUE ).fixedBackoff( Duration.ofSeconds( 1 ) )
        .doOnRetry( objectRetryContext -> System.out.println("retrying") )
        .apply( Mono.error( new IOException() ) )
        .then( Mono.just( 47 ) )
        .subscribe();

异常在中捕获,控制台打印重试。然而,当我介绍一个 Mono.delay ,将传播异常,并最终由默认值捕获 Hook .

Retry
        .anyOf( IOException.class )
        .retryMax( Long.MAX_VALUE ).fixedBackoff( Duration.ofSeconds( 1 ) )
        .doOnRetry( objectRetryContext -> System.out.println("retrying") )
        .apply( Mono.delay( Duration.ofSeconds( 3 ) ).then( Mono.error( new IOException() ) ) )
        .then( Mono.just( 47 ) )
        .subscribe();

如果在该级别使用

Hooks.onOperatorError( ( throwable, o ) -> {

        System.out.print( "hooked - " );
        return throwable;

    } );

然后控制台打印hooked-重复重试。原因是什么?正确的处理方法是什么?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题