異常信息,沒想到是@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子類
-
NullPointerException,上面講到的,他是最常見的子類
-
NumberFormatException:繼承IllegalArgumentException,字符串轉換爲數字時出現。比如int i= Integer.parseInt(“ab3”);
-
ArrayIndexOutOfBoundsException:數組越界。比如 int[] a=new int[3]; int b=a[3];
-
StringIndexOutOfBoundsException:字符串越界。比如 String s=”hello”; char c=s.chatAt(6);
-
ClassCastException:類型轉換錯誤。比如 Object obj=new Object(); String s=(String)obj;
-
UnsupportedOperationException:該操作不被支持。如果我們希望不支持這個方法,可以拋出這個異常。既然不支持還要這個幹嗎?有可能子類中不想支持父類中有的方法,可以直接拋出這個異常。
-
ArithmeticException:算術錯誤,典型的就是0作爲除數的時候。
-
IllegalArgumentException:非法參數,在把字符串轉換成數字的時候經常出現的一個異常,我們可以在自己的程序中好好利用這個異常。