天天看點

Java異常處理機制個人小結

Java中的異常是指程式運作中的一些錯誤,比如,棧溢出(java.lang.StackOverflowError)、空指針異常(NullPointerException)以及記憶體不足(java.lang.OutOfMemoryError)等等,這些錯誤有時候可以通過人為因素而得意解決。值得注意的是并不是所有的錯誤都是異常。

Java中的異常用對象來表示。一般有兩個來源,一是Java語言本身定義的一些基本異常類型。二是通過繼承Exception類或其子類來定義的一些異常。這些異常在适當的條件下被抛出,使得程式有效的在适當的情況之下運作。

下面就讓我們來看幾種Java中的異常處理機制。JAVA異常處理通過五個關鍵字try catch throw throws finally來進行。一般情況下,try語句中塊内出現異常,則異常會被抛出,在catch語句中捕獲到這個異常并根據你所定義或者調用的方法來處理異常,通常,在使用try..catch語句是還會加上finally,它的含義是不論程式是否出現異常,怎麼被處理,最後都要歸結于這個方法,它是在任何情況下都必須被執行的代碼,是以必須要保證該語句的可靠性才能使程式正确運作。

一般結構如下:

try{

......

}catch(異常類型1 異常對象1){

異常對象1.要調用的方法

}catch(異常類型2 異常對象2){

異常對象2.要調用的方法

}finally{

......

}

另一種語句搭配是throws...throw。通過throws關鍵字在方法上聲明要抛出的異常,然後再方法内部通過throw抛出異常對象。

一般結構如下:

public void test()throws NewException{

...

}if(...){

throw new NewExcption();

}

}

還有一種比較便捷簡單的方法,那就是通過Excption語句不斷一層層的将問題移交給上一層調用它的類中,由上一層的類中的處理機制處理。這種層層抛出一直可以将錯誤抛到JAVA的虛拟機中,由虛拟機自帶的方法自行解決。

值得注意的是如果找不到處理異常的代碼塊,可以調用異常對象的printStackTrace的方法,列印方法調用棧的異常資訊。

最後讓我們再來區分一下Java處理異常中幾個拼寫比較相像但是用法完全不同的語句,Throwable throws語句以及throw語句。類 Throwable是Java中所有異常和錯誤父類。它有兩個直接的子類:Error和Exception。而throws語句和throw語句,前面已經介紹,throws語句總是出現在函數頭中,用來标明該成員函數可能抛出的各種異常。而throw語句則出現在函數體中,調用try中的方法,終止程式,用來抛出一個異常。