日志排查时发现了一个报错:“No value present”

What?这是什么鬼,没印象啊。什么不存在,忍不住脑补脑补脑补,脑补没成功。

查了下资料,又是一个忍不住狂扇自己系列(嗯,是个狠人)…

都知道java8中引入了很多新特性,其中就包括Optional :有效的避免了传统的空指针,想一想曾经你的if else 非空判断,再对比下旁边这位。

不由得感叹:优雅简便,卧槽????????(美好的一天从口吐芬芳开始…)

因此很多情况下都会选择使用Optional,但是往往最容易忽略掉的一点就是:忘记调用该对象的isPresent()方法判断是否存在就直接调用get()方法去获取

so,杯具就产生了:“No value present ”,开心不开心?

博主还专门测试了一下,一点都不开心。
关于报错:java.util.NoSuchElementException: No value present
如上图中,我用空对象来模拟测试,测试结果如下:
关于报错:java.util.NoSuchElementException: No value present
这里很明显可以看到,是调用get()方法时抛出的异常。
关于报错:java.util.NoSuchElementException: No value present

为什么会抛出这个异常?如何解决,准确来说是如何避免这种情况呢?

为什么,你还敢问为什么?
关于报错:java.util.NoSuchElementException: No value present

所以这种情况怎么处理呢?

加判断,isPresent()方法你值得拥有。

判断下返回的Optional对象是否存在,存在了再获取数据,处理数据。
关于报错:java.util.NoSuchElementException: No value present
可以看到如下运行效果,正常了吧。
关于报错:java.util.NoSuchElementException: No value present
居然是这个问题。我…

不说了,面壁思过去了

相关文章: