Java 针对特定异常的反应流跳过筛选器
假设我有一个这样的反应流:Java 针对特定异常的反应流跳过筛选器,java,spring-webflux,Java,Spring Webflux,假设我有一个这样的反应流: Flux-apps=this.getApps(arg) .filter(res->firstFilter()) .filter(res->secondFilter()) 并假设getApps()调用返回UnsupportedOperationException。当引发此异常而不解析整个链时,如何跳过firstFilter并返回secondFilter的默认vault 请注意,UnsupportedOperationException应该是导致跳过firstFilte
Flux-apps=this.getApps(arg)
.filter(res->firstFilter())
.filter(res->secondFilter())
并假设getApps()
调用返回UnsupportedOperationException
。当引发此异常而不解析整个链时,如何跳过firstFilter
并返回secondFilter
的默认vault
请注意,UnsupportedOperationException
应该是导致跳过firstFilter
的唯一异常
例如,可以使用onerrorrenue
或onErrorResume
作为回退,但它们将完成整个链,并且只有onErrorResume
可以区分异常类型。Stream=null//你的类型在这里
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())
}
试试{
stream=this.getApps(arg.filter(res->firstFilter());
}捕获(不支持操作异常例外){
stream=stream.of(“1”、“2”、“3”);//例如,默认提供的字符串流
}最后{
stream.filter(res->secondFilter())
}
那么您的意思是,当getApps()抛出异常时,您希望继续使用要提供给第二个筛选器的自定义设置流?当第一个筛选器抛出异常时,这更有意义,但我没有理解!假设getApps()返回该特定异常,我希望有一个错误处理逻辑,如果引发该异常,可以跳过第一个筛选器,并为链的其余部分提供默认值。如果getApps()返回单声道流,这是否可行?因为会立即引发异常吗?@Chaos如果getApps()返回一个流,它将首先在1stFilter上传递,然后在2ndFilter上传递。我觉得很傻,不知道为什么我不这么简单地想到它!我只是想用streams来解决这个问题。