lambda表达式内出现异常无法throw抛出

Posted 学习使得吾快乐

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了lambda表达式内出现异常无法throw抛出相关的知识,希望对你有一定的参考价值。

问题描述

今儿在使用lambda表达式时,lambda表达式内出现了异常,准备直接抛出,没想到却还是报错:

由于博主lambda表达式用的比较少,刚看到这问题时,可以说是一脸懵逼.毕竟两边的提示可以说是前后矛盾啊.
刷新几下编译器还是报错,就只能老老实实的找原因.

问题原因

所幸Java是一门比较成熟的语言,前辈们已经踩了足够的坑.
之所以有这种现象是因为lambda表达式本身没有处理异常的机制 ,以至于遇到受检异常时,无法通过主动抛出来解决.
但具体的也不是很清楚了,若有其他道友遇到这种问题,欢迎评论区留言讨论.

解决方案

将受检异常包装成非受检异常,即RuntimeException

效果如下:

虽然效果还是不甚理想,就当涨了一波lambda表达式的熟练度吧.
老老实实的用普通循环写也是不错的

参考内容

  1. jdk8 lambda表达式抛出异常
  2. lambda表达式处理异常

如果大家遇到了类似的问题,欢迎在评论区一起交流探讨

以上是关于lambda表达式内出现异常无法throw抛出的主要内容,如果未能解决你的问题,请参考以下文章

异常的处理

Java异常处理中关键字throws,throw,try,catch,finally分别代表啥意义?在try块中可以抛出异常吗

Java的throw 和throws有啥区别?

Java throw和throws的区别

java中如何获取throws抛出的异常,并且把异常打印到指定的jsp页面

java啥时候需要抛出异常