我正在尝试使用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
答案 0 :(得分:0)
我必须做下一步,将括号放在eat()
上res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t ->{ eat(t); }) );