常見的空指針異常有哪些?


定義:NullPointerException由RuntimeException派生出來,是一個運行級別的異常。意思是說可能會在運行的時候才會被拋出,而且需要看這樣的運行級別異常是否會導致你的業務邏輯中斷。
發生原因:
1.空指針異常發生在對象為空,但是引用這個對象的方法以及自動裝箱自動拆箱的時候。
  例如: String s = null; //對象s為空(null) int length = s.length();//發生空指針異常  
2.一個變量是null,及只有其名,沒有實值內容,也沒分配內存,當你要去取他的長度,對他進行操作就會出現NullPointException,所以生命一個變量時最好給它分配好內存空間,給予賦值。  
3.比如變量為空,而你沒有去判斷,就直接使用,就會出現NullPointException。寫程序時嚴謹些,盡量避免了,例如在拿該變量與一個值比較時,要么先做好該異常的處理
  如: if (str == null) {   System.out.println("字符為空!"); }
  當然也可以將這個值寫在前面進行比較的,例如,判斷一個String的實例s是否等於“a”,不要寫成s.equals("a"),這樣寫當s為空的時候容易拋出NullPointerException,而寫成"a".equals(s)就可以避免這個問題。不過對變量先進行判空后再進行操作比較好  
4.盡量避免返回null,方法的返回值不要定義成為一般的類型,而是用數組。
  如果list想要返回null的時候,就返回一個沒有元素的數組,然后再對list.size()==0進行判斷。就能避免許多不必要的NullPointerException,使用NullObject返回代替返回null確是一種不錯的選擇。注意,NullObject是特殊的null對像象
5.當valueOf()和toString()返回相同的結果時,寧願使用前者。
  因為調用null對象的toString()會拋出空指針異常,如果我們能夠使用valueOf()獲得相同的值,那寧願使用valueOf(),傳遞一個null給valueOf()將會返回“null”,尤其是在那些包裝類,像Integer、Float、Double和BigDecimal。

 

推薦養成習慣:

1.習慣使用StringUtils,它的方法是空指針安全的,他們不會拋出空指針異常

2.逢對象多考慮一步

3.多使用第三方庫,使用spring framework 自帶的方法注解及lombk,但也要看清他們的方法執行的原理
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM