日誌排查時發現了一個報錯:“No value present”
What?這是什麼鬼,沒印象啊。什麼不存在,忍不住腦補腦補腦補,腦補沒成功。
查了下資料,再次排查了一下代碼。其它地方都加了,就這地方忘了。又是一個忍不住狂扇自己系列(嗯,是個狠人)…
想了想,還是記錄一下吧。
都知道java8中引入了很多新特性,其中就包括Optional :有效的避免了傳統的空指針,想一想曾經你的if else 非空判斷,再對比下旁邊這位。
不由得感嘆:優雅簡便,臥槽🐂🍺(美好的一天從口吐芬芳開始…)
因此很多情況下都會選擇使用Optional,但是往往最容易忽略掉的一點就是:忘記調用該對象的isPresent()方法判斷是否存在就直接調用get()方法去獲取。
so,杯具就產生了:“No value present ”,開心不開心?
內心:(總覺得他應該是有值的…總覺得,總覺得。呸,渣男,萬一沒值呢。不要你覺得,我要我覺得!)
博主還專門測試了一下,一點都不開心。
如上圖中,我用空對象來模擬測試,測試結果如下:
這裏很明顯可以看到,是調用get()方法時拋出的異常。
爲什麼會拋出這個異常?如何解決,準確來說是如何避免這種情況呢?
爲什麼,你還敢問爲什麼?
所以這種情況怎麼處理呢?
加判斷,isPresent()方法你值得擁有。
判斷下返回的Optional對象是否存在,存在了再獲取數據,處理數據。
可以看到如下運行效果,正常了吧。
居然是這個問題。我…
不說了,面壁思過去了