关于报错:java.util.NoSuchElementException: No value present

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

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

查了下资料,再次排查了一下代码。其它地方都加了,就这地方忘了。又是一个忍不住狂扇自己系列(嗯,是个狠人)…

想了想,还是记录一下吧。

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

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

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

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

博主还专门测试了一下,一点都不开心。

内心:(总觉得他应该是有值的…总觉得,总觉得。呸,渣男,万一没值呢。不要你觉得,我要我觉得!)
在这里插入图片描述
如上图中,我用空对象来模拟测试,测试结果如下:
在这里插入图片描述
这里很明显可以看到,是调用get()方法时抛出的异常。
在这里插入图片描述

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

为什么,你还敢问为什么?
在这里插入图片描述

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

使用Optional.ofNullable().orElse();
注意:字符串类型不要使用这种方法判定,不然就是坑。“ ”会判为非空

居然是这个问题。我…

不说了,面壁思过去了

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值