SSM框架 報空指針 java.lang.NullPointerException

異常信息,沒想到是@Autowired使用問題

解決:每次注入接口的時候都必須引入@Autowired註解,省略就會報null,@Autowired每次只能注入一個對象(接口)

@Autowired
private GoodsService goodsService ;
@Autowired
private UserInfoService userService ;

爲什麼沒有@Autowired會報空指針異常

userService.add(user) ;

如果沒有@Autowired註解那麼就沒有給這個對象(接口)分配內存,就是說當這個對象(接口)在使用其類的方法時沒有指向內存空間而引發了空指針異常,也就是NullPointerException

異常信息的(部分)體系結構

在這裏插入圖片描述

Throwable是異常類的頂級父類,它也是繼承於Object超級類。

Exception 則表示一般性的異常,而且這種異常是設計中早已考慮到很常見的錯誤,並且一定要求在設計中說明如何處理這種異常。

Error主要是用於表示Java和虛擬機內部的異常信息,Exception異常則是由於程序中可能存在各種的問題,是需要使用者去注意和捕獲的異常。

RuntimeException異常信息

RuntimeException類叫檢查異常類,所有方法都可以在不聲明throws的情況下拋RuntimeException及其子類,如 java.lang.NullPointerException,通常來說就是運行時產生的錯誤。

所有的非RuntimeException類叫非檢查異常類

關於runtime異常處理try{}catch解決辦法
RuntimeException會報它的子類異常信息,這是我們的代碼出現了錯我,必須通過找到異常錯誤並修改纔會避免。try{}catch使用到調用方法上面可以保證程序的運行,不至於讓項目崩掉,但是錯誤仍然無法解決。

常見的其他RuntimeException子類

  1. NullPointerException,上面講到的,他是最常見的子類

  2. NumberFormatException:繼承IllegalArgumentException,字符串轉換爲數字時出現。比如int i= Integer.parseInt(“ab3”);

  3. ArrayIndexOutOfBoundsException:數組越界。比如 int[] a=new int[3]; int b=a[3];

  4. StringIndexOutOfBoundsException:字符串越界。比如 String s=”hello”; char c=s.chatAt(6);

  5. ClassCastException:類型轉換錯誤。比如 Object obj=new Object(); String s=(String)obj;

  6. UnsupportedOperationException:該操作不被支持。如果我們希望不支持這個方法,可以拋出這個異常。既然不支持還要這個幹嗎?有可能子類中不想支持父類中有的方法,可以直接拋出這個異常。

  7. ArithmeticException:算術錯誤,典型的就是0作爲除數的時候。

  8. IllegalArgumentException:非法參數,在把字符串轉換成數字的時候經常出現的一個異常,我們可以在自己的程序中好好利用這個異常。

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