Java中异常的分类
2019獨角獸企業重金招聘Python工程師標準>>>
下面介紹幾種常見的異常類型,便于在出錯時對程序進行查錯:
??(1)Exception??? 各種異常的根類
?????? 如果你不知道將發生的異常集體屬于哪,而可以肯定種這個地方會出現異常時,可以把異常類型定義為Exception。
? (2)ArithmeticException???? 算數運算錯誤異常
?????? 這個異常是在算數運算時經常遇到的,常見的情況是除數為0時拋出的異常。
??(3)ArrayIndexOfOutBoundsException??? 數組下標越界
?????? 編程時要記住Java數組下標是從0開始的,數組下標最大值為數組長度減1,如arr[10],最后一個數組元素是arr[9],如果寫成arr[10]就會出現ArrayIndexOfOutBoundsException異常。
??(4)NullPointException??? 空指針異常
?????? 這個異常是針對調用未經初始化或未定義的對象拋出的異常。
??(5)ClassNotFoundException?? 不能加載所需的類
?????? 在java文件編譯后,可能是由于需要把.class文件移到了其他的文件夾,此時引用這個.class文件要注意修改其路徑,否則會拋出ClassNotFoundException異常。
??(6)InputMismatchException??? 輸入的數據類型與所需類型不匹配異常
?????? 比如你需要int類型,但是通過輸入框得到的是String類型,就會拋出InputMismatchException異常。
??(7)IllegalArgumentException?? 方法接受非法參數
?????? 這個是傳入方法中的參數類型不正確,如方法plus(int a,int b),調用時寫成a.plus(1,a)就會出現
IllegalArgumentException異常。
??(8)NumberFormatException??? 字符串轉換成數字異常
???????在數據類型強制轉換時出現的異常,字符串“123”轉換成數字123不會出現異常,但是字符串“1@23”轉換成int類型就會拋出ClassCastException異常。?????
這些是常見的RunTimeException(運行時異常),也就是說,這些異常不需要強制聲明會拋出,或者強制捕捉的異常。
舉兩個例子
程序出了那種異常JVM就會拋出相應的異常 比如代碼: ArrayIndexOutOfBoundsException public void demo1(){try{ int a = 10/0; } catch(ArithmeticException ae) { System.out.println(“算術運算異常:”+ae.getMessage()); } catch(Exception e) { System.out.println(“其他異常”+e.getMessage()); } } public void demo2() { String strList[] = {"a","b","c"}; try{ String str = strList[4].toString(); } catch(ArrayIndexOutOfBoundsException ae) { System.out.println(“數組下標越界:”+ae.getMessage()); } catch(Exception e) { System.out.println(“其他異常”+e.getMessage()); } } 總之Exception是所有異常的父類.如果你出現的異常被他的子類捕捉了,他就不會再捕捉比如demo2()方法 如果是出現了ArrayIndexOutOfBoundsException Exception就不會捕捉了! 那么為什么要捕捉多次呢? 因為ArrayIndexOutOfBoundsException只是數組下標越界的異常,所以它比Exception更的仔細,更能說明異常的原因!如果不是出現ArrayIndexOutOfBoundsException則Exception就會來捕捉所有異常,都繼承自java.lang.Throwable類。 Throwable有兩個直接子類,Error類和Exception類。 Exception Exception則可使從任何標準Java庫的類方法,自己的方法以及運行時任何異常中拋出來的基類型。 異常可分為執行異常(RuntimeException)和檢查異常(Checked Exceptions)兩種 RuntimeException RuntimeException在默認情況下會得到自動處理。所以通常用不著捕獲RuntimeException,但在自己的封裝里,也許仍然要選擇拋出一部分RuntimeException。 RuntimeException 是那些可能在 Java 虛擬機正常運行期間拋出的異常的超類。可能在執行方法期間拋出但未被捕獲的 RuntimeException 的任何子類都無需在 throws 子句中進行聲明。????????????? ? 轉自:http://www.cnblogs.com/ciyan/p/4906055.html
轉載于:https://my.oschina.net/trueloveforever/blog/743571
總結
以上是生活随笔為你收集整理的Java中异常的分类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AutoCAD 2011、Map 3D
- 下一篇: Oracle11gR2 数据库客户端PL