Durian的Errors类rethrow()。wrap方法调用编译器错误

时间:2016-12-15 02:01:23

标签: java lambda checked-exceptions

我正在尝试使用Durian library的Errors类来捕获Java 8的lambda函数中的已检查异常。

我写了简单的函数:

void eat(NsiItemInfoType food) throws CantUpdNSI {}

试图称之为:

此代码效果很好:

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(this:: eat) );

但是这段代码会调用编译器错误对于类型Errors.Rethrowing

,方法换行(Throwing.Function)是不明确的。
res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t -> eat(t)) );

我无法理解为什么。

我从这里得到了例子:https://github.com/diffplug/durian/blob/v2.0/test/com/diffplug/common/base/ErrorsExample.java

榴莲版:com.diffplug.durian 3.4.0

1 个答案:

答案 0 :(得分:0)

我必须做下一步,将括号放在eat()

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t ->{ eat(t); }) );