【发布时间】:2016-12-15 02:01:23
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
我无法重现 JRE1.8 的问题。您使用的是哪个 JRE 版本?
-
正是 jdk1.8.0_60
-
用 jdk1.8.0_60 试过没有问题。您使用哪个 IDE(以及哪个版本)?
-
Spring Tool Suite 版本:3.7.3.RELEASE 构建 ID:201602250958 平台:Eclipse Luna SR2 (4.4.2)
-
尝试将您的 Eclipse 更新到最新版本。
标签: java lambda checked-exceptions