1. 程式人生 > >Java常見異常總結(持續更新中......)

Java常見異常總結(持續更新中......)

1.類未找到

Exception in thread "main" java.lang.NoClassDefFoundError:類名

Caused by: java.lang.ClassNotFoundException:類名

這種異常未未發現類異常,是由於編譯的時候未找到該類而報異常,一般原因是由於缺少專案所需jar包導致。一般來說,專案A呼叫了專案B所打成的jar包中的類的話,那麼專案B所需要的jar包也應該同時匯入專案A中。

處理方法:一層層找專案所需jar包及底層專案所需jar包,從中找到所需要的類。

2.方法未找到

Exception in thread "main" java.lang.NoSuchMethodError: 類名.方法名

這種異常是由於編譯的時候未找到該方法而報異常,一般原因是因為方法不存在或者是方法引數列表有誤(包括某些引數可能為空等情況)。

處理方法:首先判斷類是否找到,然後到該方法所在的類中,新增或者修改方法。

補充:NoSuchMethodError之後若緊接著出現(形參列表)+ Ljava/lang/String或者Ljava/lang/list,就說明陣列出現了問題,陣列型別不匹配。

3.記憶體溢位

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Java虛擬機器記憶體溢位

處理方法:可參考

執行Spark常見問題處理方法(持續更新中......)其中第二點所描述方法。

4.算術運算錯誤

Exception in thread "main" java.lang.java.lang.ArithmeticException

算術運算出現錯誤,比如分母為零等

處理方法:根據Exception之後陸續報出的異常出現位置進行修改即可。

5.陣列越界

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException

這種異常出現的原因是由於根據陣列元素下標訪問陣列超出了陣列原有長度,原因有二:1,陣列長度過短,一般為空;2,訪問陣列元素下標值過大或者過小,遍歷等操作設定引數有誤。

處理方法:首先判斷陣列長度,而後判斷訪問下標值大小,一般可用陣列.length來進行遍歷等操作。

6.空指標

Exception in thread "main" java.lang.NullPointerException

這種異常出現的原因是物件為空,而後呼叫這個物件所在類的其他方法時報此異常。

處理方法:找出例項化時物件為空的具體原因,具體問題具體分析。

7.String轉其他型別

Exception in thread "main" java.lang.NumberFormatException

由於在將String類轉換為其他類如int等時出現異常,一般後續會輸出日誌說明異常所在位置,及轉換出錯型別。

處理方法:強行轉換容易出現這種問題,搞清楚數具體數值及型別是關鍵。