本文實例分析了Java的異常機制,並分享給大家參考。相信有助於大家提升大家Java程式異常處理能力。具體分析如下:
眾所周知,java中的異常(Exception)機制很重要,程式難免出錯,異常機制可以捕捉程式中的錯誤,用來提高程式的穩定性和健全性。
java中的異常分為Checked Exception(非Runtime Exception)和UnChecked Exception(Runtime Exception),所有的異常類別都直接或間接的繼承Exception。 Exception又直接繼承自Throwable類,Throwable類別的直接子類別還有error類,不過當出現error時,程式會直接退出執行,程式處理不了error,所以這裡重點討論Exception類別。 RuntimeException類別繼承自Exception,執行時期異常都直接或間接繼承自RuntimeException類別。其他繼承Exception類別的是非執行時間異常,在編譯期間可發現。運行時異常是在運行時才會出現的,如算術除零,在編譯期間是可以通過的,但在運行時會拋出運行時異常,除數不能為零。
java的異常處理有兩種
1、捕獲異常
結構如下
try{//執行可能產生異常的程式碼}catch(RuntimeException e){//對捕獲的異常進行處理}catch(Exception e)//可定義捕獲多個異常{//對捕獲的異常進行處理}finally {//捕獲完後要執行的程式碼,可有可無,如果有的話就一定會執行,不管有沒有異常}try-catch-finally
如果異常被catch捕捉後,後面還有catch語句就不會執行了,但如果有finally的話就一定會執行finally區塊裡面的語句。
2.聲明拋出例外
在呼叫會產生異常的方法所在的方法聲明處聲明throws Exception,此方法將不會對該類別異常進行處理,而是由該方法的呼叫者處理。
3.人為的拋出異常
直接在方法內拋出異常,throw exception;
對於運行時異常推薦不對其進行處理。
自訂異常是定義了一個繼承自Exception類別的子類,一般不會定義繼承自RuntimeException類,在try區塊中存在return語句時,如果有finally區塊語句,那麼也要先執行完finall y區塊的語句之後再傳回,但如果try區塊中存在System.exit(0)語句,就不會執行finally區塊的語句,因為System.exit(0)會終止目前執行的java虛擬機,程式就會在虛擬機器終止前結束執行。
class myException extends Exception{ public myException(String str) { super(str); }}myException
異常在檔案處理,輸入輸出流的應用場合等都會用上。
常見的異常類型有:
1、java.lang.NullPointerException:空指標異常,出現該異常的原因就是某個引用為null,但程式中又呼叫了該引用的某個方法。
2、java.lang.ClassNotFoundException :找不到指定的類,可能是類別未定義。
3、java.lang.ArithmeticException:算術異常,如除數為零。
4、FileNotFoundException:在檔案處理中,找不到指定的檔案。
5、IOException:輸入輸出流異常
6.SQLException:sql異常,執行sql語句出現錯誤。
此外還有許多類型的異常,在以後的程式設計中會遇到。相信本文所述對大家的Java程式設計有一定的借鏡價值。