Java中異常的分類

下面介紹幾種常見的異常類型,便於在出錯時對程序進行查錯:html

  (1)Exception    各類異常的根類java

       若是你不知道將發生的異常集體屬於哪,而能夠確定種這個地方會出現異常時,能夠把異常類型定義爲Exception。編程

  (2)ArithmeticException     算數運算錯誤異常數組

       這個異常是在算數運算時常常遇到的,常見的狀況是除數爲0時拋出的異常。指針

  (3)ArrayIndexOfOutBoundsException    數組下標越界code

       編程時要記住Java數組下標是從0開始的,數組下標最大值爲數組長度減1,如arr[10],最後一個數組元素是arr[9],若是寫成arr[10]就會出現ArrayIndexOfOutBoundsException異常。orm

  (4)NullPointException    空指針異常htm

       這個異常是針對調用未經初始化或未定義的對象拋出的異常。對象

  (5)ClassNotFoundException   不能加載所需的類blog

       在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

相關文章
相關標籤/搜索