這裏介紹幾種常見的異常並對原因進行分析,包括:
- ArrayIndexOutOfBoundsException異常;
- UnsupportedClassVersionError錯誤;
- NumberFormatException異常;
- 堆棧溢出和內存溢出。
3. ArrayIndexOutOfBoundsException異常
這是一個非常常見的異常,從名字上看是數組下標越界錯誤,解決方法就是查看爲什麼下標越界,下面就是一個錯誤實例:
Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException:2
at test4.State.nextStates(State.java93)
at test4.State.main(State.java:478)
從這些提示信息中可以獲取如下信息:
1) 錯誤發生在93行
2)發生錯誤的時候,下標的值爲2
接下來分析爲什麼下標值是2不可以就解決問題了。
4. UnsupportedClassVersionError
錯誤提示如下:
java.lang.UnsupportedClassVersionError:Bad version number in.class file
錯誤原因:
編譯Java和運行Java所使用的Java的版本不一致。例如,編譯的時候使用的Java版本是6,運行時候使用的Java版本是5。
解決方案:
修改運行環境的Java版本或者修改編譯環境的Java版本,讓兩者保持一致。
5. NumberFormatException異常
數字轉換異常,在把一個表示數字的字符串轉換成數字類型的時候可能會報這個異常,原因是作爲參數的字符串不是由數字組成的。
6. 堆棧溢出和內存溢出
在遞歸調用的時候可能會產生堆棧溢出的情況,因爲在遞歸調用的時候需要把調用的狀態保存起來,如果遞歸的深度達到一定程度,將產生堆棧溢出的異常。
如果虛擬機的內存比較小,而程序對內存的要求比較高,則可能產生內存溢出錯誤。
常見的異常類
異常 | 說明 |
---|---|
RuntimeException | Java.lang包中多數異常的基類 |
ArithmeticException | 算術錯誤,如除以0 |
IllegalArgumentException | 方法收到非法參數 |
SecurityException | 試圖違反安全性 |
ClassNotFoundException | 不能加載請求的類 |
AWTException | AWT中的異常 |
IOException | I/O異常的根類 |
FileNotFoundException | 不能找到文件 |
EOFException | 文件結束 |