關於異常的總結

1、異常的分類

java內置異常類之間的繼承關係如圖:
關於異常的總結
1.
Throwable:
Throwable是 Java 語言中全部錯誤或異常的超類。下一層分爲 Error 和 Exception。java

Error:
Error指的是 Java 運行時內部錯誤和資源耗盡錯誤。 應用程序不拋出此類異常。 這種內部錯誤一旦出現,除了告知用戶並使程序終止以外,再無能無力.。這種狀況不多出現。ide

Exception:
Exception有兩個子類,一個是IOException(編譯器異常),另外一個是RuntimeException(運行時異常)。
2.
其中Java語言規範將派生於Error 類或 RuntimeException 類的全部異常稱爲非受查異常, 全部的其餘異常稱爲受查異常。
常見的非受查異常有:ArrayIndexOutOfBoundsException、IndexOutOfBoundsException、NullPointerException、IllegalStateException等;常見的受查異常有:ClassNotFoundException、IllegalAccessException、InterruptedException、NoSuchFieldException等。code

2、異常的處理

捕獲異常
1.try/catch語句:
使用 try 和 catch 關鍵字能夠捕獲異常。try/catch 代碼塊放在異常可能發生的地方,try/catch代碼塊中的代碼稱爲保護代碼。
Catch 語句包含要捕獲異常類型的聲明。當保護代碼塊中發生一個異常時,try 後面的 catch 塊就會被檢查。若是發生的異常包含在 catch 塊中,異常會被傳遞到該 catch 塊,這和傳遞一個參數到方法是同樣。
基本語法:對象

try{ 
 有可能出現異常的語句 ; 
}[catch (異常類型 異常對象) {
} ... ]

2.try/catch/finally語句:
與1是相似的,程序會捕獲try代碼塊裏面的代碼,若捕獲到異常則進行catch代碼塊處理。有finally則在catch處理後執行finally裏面的代碼,而且finally語句不管如何都會執行。
基本語法:blog

try{ 
 有可能出現異常的語句 ; 
}[catch (異常類型 異常對象) {
} ... ]
[finally {
 異常的出口
}]

3.自定義類捕獲異常:
java能夠自定義類異常,要注意的是:①全部異常都必須是 Throwable 的子類。②若是但願寫一個檢查性異常類,則須要繼承 Exception 類。③若是你想寫一個運行時異常類,那麼須要繼承 RuntimeException 類。
能夠以下定義異常類:繼承

class MyException extends Exception{
}

拋出異常:
1.throws/throw 關鍵字:若是一個方法沒有捕獲到一個檢查性異常,那麼該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。也可使用 throw 關鍵字拋出一個異常,不管它是新實例化的仍是剛捕獲到的。
它們兩個的區別以下:資源

public void test() throws Exception {
    throw new Exception();
}

throws表示一個方法聲明可能拋出一個異常,throw表示此處拋出一個已定義的異常(能夠是自定義需繼承Exception,也能夠是java本身給出的異常類)。編譯器

相關文章
相關標籤/搜索