1. 程式人生 > 其它 >Java關鍵字以及異常處理

Java關鍵字以及異常處理

error和exception的區別

Error類和Exception類的父類都是Throwable類,他們區別有:

Error類一般是指虛擬機器相關的問題,如系統崩潰,虛擬機器錯誤,記憶體空間不足,方法呼叫溢位等,對於這類錯誤導致的應用程式中斷,僅靠程式本省是無法恢復和預防,遇到這樣的錯誤建議程式終止。

Exception類表示由我們程式碼設計導致出現的異常,表示程式可以處理的異常,可以捕獲且恢復,重新設計我們的程式碼邏輯,使程式恢復執行。

Exception類可分為執行時異常和編譯時異常,執行時異常是編譯能通過,但是一執行就終止,程式不會處理執行時異常, 出現這類異常,程式會終止。而編譯時異常,要麼用 try。。。catch 捕獲,要麼用 throws 字句宣告丟擲,交給它 的父類處理,否則編譯不會通過。

常見的執行時異常

 1)java.lang.NullPointerException 空指標異常;出現原因:呼叫了未經初始化的物件或者是不存在的物件。

2)java.lang.ClassNotFoundException 指定的類找不到;出現原因:類的名稱和路徑載入錯誤;通常都是程式 試圖通過字串來載入某個類時可能引發異常。

3)java.lang.NumberFormatException 字串轉換為數字異常;出現原因:字元型資料中包含非數字型字元。

4)java.lang.IndexOutOfBoundsException 陣列角標越界異常,常見於運算元組物件時發生。

5)java.lang.IllegalArgumentException 方法傳遞引數錯誤。

6)java.lang.ClassCastException 資料型別轉換異常。

7)java.lang.NoClassDefFoundException 未找到類定義錯誤。

8)SQLException SQL 異常,常見於操作資料庫時的 SQL 語句錯誤。

9)java.lang.InstantiationException 例項化異常。

throw和throws的區別

throw:

1)throw 語句用在方法體內,表示丟擲異常,由方法體內的語句處理。

2)throw 是具體向外丟擲異常的動作,所以它丟擲的是一個異常例項,執行 throw 一定是丟擲了某種異常。

throws:

1)throws 語句是用在方法聲明後面,表示如果丟擲異常,由該方法的呼叫者來進行異常的處理。 2)throws 主要是宣告這個方法會丟擲某種型別的異常,讓它的使用者要知道需要捕獲的異常的型別。

3)throws 表示出現異常的一種可能性,並不一定會發生這種異常。

final、finally、finalize 的區別

final:用於宣告屬性,方法和類,分別表示屬性不可變,方法不可被覆蓋,被修飾的類不可被繼承

finally:異常處理的一部分,表示最後一定執行的部分

finalize:Object類的一個方法,在垃圾回收器執行的時候會呼叫被回收物件的此方法,可以覆蓋此方法提供垃圾回收時的其他資源的回收,該方法更像一個物件生命週期的臨終方法,當該方法被系統呼叫則代表物件即將死亡,注意:我們主動行為去調該方法並不會導致該物件死亡,這是一個被動的方法其實就是回撥方法不需要我們呼叫。