某些异常的反应流跳过过滤器

时间:2021-03-29 22:14:18

标签: java spring-webflux

假设我有一个像这样的反应流:

Flux<App> apps = this.getApps(arg)
     .filter( res -> firstFilter())
     .filter( res -> secondFilter())

并假设 getApps() 调用返回 UnsupportedOperationException。当引发此异常而不解析整个链时,如何跳过 firstFilter 并返回 secondFilter 的默认保险库?

请注意,UnsupportedOperationException 应该是导致 firstFilter 被跳过的唯一例外。

例如,可以使用 onErrorReturnonErrorResume 作为回退,但它们会完成整个链,并且只有 onErrorResume 可以区分异常类型。

1 个答案:

答案 0 :(得分:-1)

Stream<> stream = null; //your type here
try{    
  stream = this.getApps(arg).filter( res -> firstFilter());
}catch (UnsupportedOperationException ex) {
  stream = Stream.of("1","2","3"); // you default provided stream of strings for example
}finally {
  stream.filter( res -> secondFilter())
}