日志排查时发现了一个报错:“No value present”
What?这是什么鬼,没印象啊。什么不存在,忍不住脑补脑补脑补,脑补没成功。
查了下资料,又是一个忍不住狂扇自己系列(嗯,是个狠人)…
都知道java8中引入了很多新特性,其中就包括Optional :有效的避免了传统的空指针,想一想曾经你的if else 非空判断,再对比下旁边这位。
不由得感叹:优雅简便,卧槽????????(美好的一天从口吐芬芳开始…)
因此很多情况下都会选择使用Optional,但是往往最容易忽略掉的一点就是:忘记调用该对象的isPresent()方法判断是否存在就直接调用get()方法去获取。
so,杯具就产生了:“No value present ”,开心不开心?
博主还专门测试了一下,一点都不开心。
如上图中,我用空对象来模拟测试,测试结果如下:
这里很明显可以看到,是调用get()方法时抛出的异常。
为什么会抛出这个异常?如何解决,准确来说是如何避免这种情况呢?
为什么,你还敢问为什么?
所以这种情况怎么处理呢?
加判断,isPresent()方法你值得拥有。
判断下返回的Optional对象是否存在,存在了再获取数据,处理数据。
可以看到如下运行效果,正常了吧。
居然是这个问题。我…
不说了,面壁思过去了