在多个过滤器方法中处理异常的正确方法是什么,因为我们只能返回一个布尔值,不能传播失败?这就是我的代码现在的样子,我应该如何正确地处理过滤器中的异常?
Multi multi = ...;//
multi.filter(data -> {
try{
return applyFilter(data);
} catch(Exception e){
logger.error("exception occurred while checking filter", e);
//instead of returning false, how should I propagate the exception?
return false;
}
}
).onItem().transform(data -> {
return transformData(data);
}
});发布于 2021-11-03 06:44:37
如果filter谓词抛出异常,则该异常将作为失败传播到下游。如果在这种情况下,您想返回false,那么您需要像以前那样做(try/catch和返回false)。
在异常情况下,谓词只能引发运行时异常。如果要抛出选中的异常,可以使用未检查的实用程序方法(https://smallrye.io/smallrye-mutiny/guides/unchecked)。它为您将异常包装在运行时异常中。
https://stackoverflow.com/questions/69760006
复制相似问题