關於報錯:java.util.NoSuchElementException: No value present

日誌排查時發現了一個報錯:“No value present”

What?這是什麼鬼,沒印象啊。什麼不存在,忍不住腦補腦補腦補,腦補沒成功。

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

想了想,還是記錄一下吧。

都知道java8中引入了很多新特性,其中就包括Optional :有效的避免了傳統的空指針,想一想曾經你的if else 非空判斷,再對比下旁邊這位。

不由得感嘆:優雅簡便,臥槽🐂🍺(美好的一天從口吐芬芳開始…)

因此很多情況下都會選擇使用Optional,但是往往最容易忽略掉的一點就是:忘記調用該對象的isPresent()方法判斷是否存在就直接調用get()方法去獲取

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

內心:(總覺得他應該是有值的…總覺得,總覺得。呸,渣男,萬一沒值呢。不要你覺得,我要我覺得!)

博主還專門測試了一下,一點都不開心。
在這裏插入圖片描述
如上圖中,我用空對象來模擬測試,測試結果如下:
在這裏插入圖片描述
這裏很明顯可以看到,是調用get()方法時拋出的異常。
在這裏插入圖片描述

爲什麼會拋出這個異常?如何解決,準確來說是如何避免這種情況呢?

爲什麼,你還敢問爲什麼?
在這裏插入圖片描述

所以這種情況怎麼處理呢?

加判斷,isPresent()方法你值得擁有。

判斷下返回的Optional對象是否存在,存在了再獲取數據,處理數據。
在這裏插入圖片描述
可以看到如下運行效果,正常了吧。
在這裏插入圖片描述
居然是這個問題。我…

不說了,面壁思過去了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章