1

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

我写了简单的函数:

void eat(NsiItemInfoType food) throws CantUpdNSI {}

并试图称之为:

此代码运行良好:

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

但是此代码调用编译器错误方法 wrap(Throwing.Function) 对于类型 Errors.Rethrowing 不明确

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

4

1 回答 1

1

接下来我必须做,在eat() 上放置括号

res.getNsiList().getNsiItemInfo().stream().forEach(Errors.rethrow().wrap(t ->{ eat(t); }) );
于 2016-12-15T02:44:30.357 回答