Quarkus Mutiny 多过滤器异常处理

Quarkus Mutiny Multi filter Exception handling

在 multi 的过滤方法中处理异常的正确方法是什么,因为我们只能 return 一个布尔值并且不能传播失败?这就是我的代码现在的样子,我应该如何正确处理过滤器中的异常?

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);  
   }       
});

如果 filter 谓词抛出异常,该异常将作为失败传播到下游。如果,在那种情况下,你想 return false,你需要像你那样做(try/catch 和 return false)。

在异常情况下,谓词只能抛出运行时异常。如果您想抛出已检查的异常,可以使用 unchecked 实用程序方法 (https://smallrye.io/smallrye-mutiny/guides/unchecked)。它为您将异常包装在运行时异常中。