異常小總結

風痕影默發表於2014-09-18

異常類的體系結構如下:

Throwable

|-Error

|-Exception

  |-IoExcetion

  |-SQLException

  |-RuntimeException

*派生與Error與RuntimeException(執行時異常)的異常叫未檢查異常,不用程式設計師處理,直接虛擬機器會進行處理,這也就是說程式本身的錯誤

  其他的異常叫做已檢查異常,必須由程式設計師進行處理

常見的異常如下:

  型別轉化異常  ClassCastException

  陣列越界異常  ArrayIndexOutOfBoundsException

  空指標異常   NullPointerException

以上都是派生與RuntimeException

  檔案尾讀取資料異常      EOFException

  開啟不存在的檔案異常     FileNotFoundException

  查詢不存在的Class物件異常   ClassNotFoundException   

*使用異常的4種情況:

  呼叫一個丟擲已檢查異常的方法

  程式執行過程中發生錯誤

  程式出現錯誤

  JAVA虛擬機器和執行庫出現內部錯誤

*throw與throws區別

throw用於丟擲異常,throws用於宣告異常,即在方法體後註明可能丟擲的異常

*try catch字句

  *可以捕獲多個異常

    try{}

    catch(e){}

    catch(e){}

    ....

  *可以合併異常

    try{}

    catch(e1 | e2){}  

  *catch子句可以再次丟擲異常

    方式:一般把原始異常當作再次丟擲異常的原因

    程式碼舉例:

...
catch(e)
{
    Throwable se = new ServletException("data error");
    se.initCause(e);
    throw se;
}

    當捕獲異常se後,可以利用如下程式碼獲得原始異常

Throwable e = se.getCause();

*finaly子句

  當利用try catch丟擲異常後,剩餘程式碼不會執行,會停止程式,鍵入在程式終止之前會申請一些本地資源還未關閉,於是引入了finally子句。

  執行時刻:不管拋沒拋異常,finally子句一定執行。

*帶資源的try語句

  使用條件:所使用的資源類實現了一個AutoCloseable介面類,其中有個方法void close() throws Exception,這是JDK7中的特性

  形式:程式碼舉例

try(Scanner in = new Scanner(new FileInputStream("/....")));
{
    while(in.hasNext())
        ....
}

  此中使用形式,確保發生任何情況發生異常都會被關閉

 

相關文章