【发布时间】:2021-01-28 20:26:19
【问题描述】:
我有一个函数
public ShoppingCart fetchCart(Long storeId) throw NotFoundException {
///
}
然后我试图通过使用将此函数分配给另一个函数
Function<Long, ShoppingCart> func = e -> {
fetchCart(e)
}
但它总是告诉我异常没有得到处理。但是当我尝试在函数分配周围添加 try/catch 时,我的“Function
有没有办法做到这一点并捕获原始函数的异常?谢谢!
更多上下文。我这样做是因为我希望将 func 作为参数提供给另一个函数,这样这个 func 就可以并行运行另一个函数......就像比较这些函数的值甚至它们的异常。因此,该功能是必不可少的,不能在 fetchCart 中捕获..
【问题讨论】:
-
在我看来最好的解决方案是在 fetchCart 方法中处理异常
-
嗨 pirho,但我没有使用帖子中提到的@FunctionalInterface...我希望将此 func 分配给 fetchCart 然后将其传递给另一个函数,以便这个和另一个函数可以并行运行。有点像并行框架..
-
没有必要使用注解
@FunctionalInterface,这只是一个好习惯。接口函数也有注解,所以你正在使用它。 -
在 java 8 的本质和接口数量的爆炸式增长中,您可以创建一个
FindableFunction<T, R>,它执行类似于R apply(T input) throws NotFoundException的操作。然后你会指定你正在寻找一个名为FindableFunction的Function,也就是一个可以抛出你指定的异常的函数。对我来说,一个真实的例子是SQLFunction,它有throws SQLException。
标签: java function exception lambda