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

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

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

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

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

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

如果在该级别使用

  1. Hooks.onOperatorError( ( throwable, o ) -> {
  2. System.out.print( "hooked - " );
  3. return throwable;
  4. } );

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

暂无答案!

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

相关问题