詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法
前言:
在做后臺(tái)時(shí)用的jsp開發(fā),在頁面向controller傳參時(shí)用String接收的參數(shù),但是數(shù)據(jù)庫實(shí)體中jies接收該參數(shù)時(shí)是int類型,做了一下強(qiáng)制轉(zhuǎn)換,但是沒有判斷去空格,結(jié)果頁面加載時(shí)就報(bào)500錯(cuò)誤了。
錯(cuò)誤截圖:

在報(bào)錯(cuò)后注意分析報(bào)錯(cuò)信息,如上圖提示在ShopController.java 的92行出錯(cuò)了,那么錯(cuò)誤就很容易定位了,去看那里的代碼。

錯(cuò)誤關(guān)鍵字 java.lang.NumberFormatException 這句話明確告訴了我們是數(shù)字格式異常,接著后面有 null 提示,這就告訴我們你當(dāng)前想把 null 轉(zhuǎn)換成數(shù)字類型時(shí)出錯(cuò)了,這樣就很確切了。在傳參的時(shí)候應(yīng)該是Integer類型,而我在后臺(tái)用String類型接收,最后又將String類型給強(qiáng)制轉(zhuǎn)換成Integer類型,在沒有值得情況下自然是轉(zhuǎn)不了了,所以就有null值了。
具體是哪個(gè)類的哪個(gè)方法的哪一行的錯(cuò)誤了,看下面錯(cuò)誤堆棧,找自己寫的第一個(gè)類
com.dxz.controller.ShopController.index(ShopController.java:92)
原來是 com.dxz.controller.ShopController類的index方法里的第92行出錯(cuò)了。
這樣就定位到了Integer pid=Integer.parseInt(provinceId);具體是 Integer.parseInt(provinceId)時(shí)出的錯(cuò),知道了錯(cuò)誤地方就可以相應(yīng)的解決了
解決這個(gè)很簡單 ,把參數(shù)用Integer類型來接收,避免了轉(zhuǎn)換的問題,問題也就隨之解決了。
到此這篇關(guān)于詳解java.lang.NumberFormatException錯(cuò)誤及解決辦法的文章就介紹到這了,更多相關(guān)java.lang.NumberFormatException錯(cuò)誤內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
struts升級(jí)到2.5.2遇到的問題及解決方案(推薦)
原來的版本是2.3.x,由于安全原因需要升級(jí)到2.5.2。但是在升級(jí)過程中遇到各種各樣的問題,下面小編給大家?guī)砹藄truts升級(jí)到2.5.2遇到的問題及解決方案,需要的朋友參考下吧2016-11-11
spring導(dǎo)入framework報(bào)紅問題
這篇文章主要介紹了spring導(dǎo)入framework報(bào)紅問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
GraalVM?native-image編譯后quarkus的超音速啟動(dòng)
這篇文章主要介紹了經(jīng)過GraalVM?native-image編譯后的quarkus,來帶大家驗(yàn)證一下號(hào)稱超音速亞原子的quarkus是否名副其實(shí),有需要的朋友可以借鑒參考下,希望能夠有所包幫助2022-02-02
MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法
這篇文章主要介紹了MyBatis啟動(dòng)時(shí)控制臺(tái)無限輸出日志的原因及解決辦法的相關(guān)資料,需要的朋友可以參考下2016-07-07
微服務(wù)之間如何通過feign調(diào)用接口上傳文件
這篇文章主要介紹了微服務(wù)之間如何通過feign調(diào)用接口上傳文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
使用sharding-jdbc實(shí)現(xiàn)水平分表的示例代碼
本文主要介紹了sharding-jdbc實(shí)現(xiàn)水平分表,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11

