当前位置: 代码迷 >> 综合 >> unreported exception E; must be caught or declared to be thrown
  详细解决方案

unreported exception E; must be caught or declared to be thrown

热度:95   发布时间:2024-01-04 00:14:18.0

         在本地编译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_731.8.0_181做测试,73版本也不行,但是181版本可以,确定和小版本有关系,怀疑是低版本一个bug,具体原因也没搞明白。

最后有知道的大神欢迎留言解答!

  相关解决方案