在本地编译java服务的时候,编译报错:未报告的异常错误E; 必须对其进行捕获或声明以便抛出
error: unreported exception E; must be caught or declared to be thrown
E extends Exception declared in method rethrowFunction(Function_WithExceptions)
看提示报错是在rethrowFunction(Function_WithExceptions)中,这块逻辑是在lambda表达式里处理异常:
List<BigDecimal> deList = list.stream()
.map(LambdaExceptionUtil.rethrowFunction(item -> (BigDecimal) method.invoke(item)))
.collect(Collectors.toList());
public static <T, R, E extends Exception> Function<T, R> rethrowFunction(Function_WithExceptions<T, R, E> function) throws E {
return t -> {
try { return function.apply(t); }
catch (Exception exception) { throwAsUnchecked(exception); return null; }
};
}
查询资料,没找到具体原因,怀疑和jdk小版本有关系,因为同事稍微高一点的版本没有问题,我本地使用的是jdk1.8.0_60版本,同事的是jdk1.8.0_151版本,又从官网下了1.8.0_73和1.8.0_181做测试,73版本也不行,但是181版本可以,确定和小版本有关系,怀疑是低版本一个bug,具体原因也没搞明白。
最后有知道的大神欢迎留言解答!