當程式運行出現異常時,會退出程式結束運行而不至於讓程式崩潰。 1. 異常類 所有異常的根類是java.lang.Throwable,其下有兩個子類:Error和Exception。 (1) Error Error是程式無法處理的錯誤,錶面系統JVM處於不可恢復的崩潰狀態,此時錯誤與代碼書寫無關。 如 ...
當程式運行出現異常時,會退出程式結束運行而不至於讓程式崩潰。
1. 異常類
所有異常的根類是java.lang.Throwable,其下有兩個子類:Error和Exception。
(1) Error
Error是程式無法處理的錯誤,錶面系統JVM處於不可恢復的崩潰狀態,此時錯誤與代碼書寫無關。
如:記憶體資源不夠時,將出現OutOfMemeoryError。
(2) Exception
Exception是程式本身能夠處理的異常。Exception是所有異常類的父類,通常異常分為RuntimeException(運行時異常)、CheckedException(已檢查異常)。
- RuntimeException通常可添加邏輯處理來避免。如:被0除異常、空指針異常、類型轉換異常、數組下標越界異常、數字格式異常等。
- CheckedException必須做出處理,否則無法通過編譯。如:IOException、SQLException、自定義異常類等。
2. 異常捕獲
捕獲異常的關鍵詞:try--catch--finally
try {可能出現異常的語句} catch (異常類類名 e) {...} catch (異常類類名 e) {...} finally {...}
(1) try
try後麵包含可能出現異常的語句。
try語句至少包含一個catch語句或一個finally語句。
(2) catch
Throwable類的預設方法:
toString(): 顯示異常類類名及出現異常的原因。
getMessage(): 顯示出現異常的原因。
printStackTrace(): 跟蹤異常事件發生時堆棧的內容。
(3) finally
在異常處理後一般都會執行的語句放在finally中,如:關閉文件流、斷開資料庫連接等。
要點:
- 當try、catch中存在return語句時,finally語句也會執行,其執行後再通過return語句退出。
- 當try、catch中存在System.exit(0)語句時,finally語句不會執行。
3. 異常拋出
拋出異常不是在出現異常時才出現的,而是代碼中定義的出現異常,使用throw語句拋出異常。
4. 自定義異常類
[訪問修飾符] class 異常類類名 extends Exception { [訪問修飾符] 返回值類型 方法名(參數列表) throws 異常類1[, 異常類2] { ... } ... }
要點:
throw是拋出異常的關鍵字。
throws是聲明方法時可能出現的異常類。
5. 斷言
(1)用途
用於調試,相當於一個if判斷。
(2)用法
斷言在程式中一般處於關閉狀態,若想要使用,則在編譯後添加參數即可。
java -ea 主類類名
(3)語法
當bool表達式為False時,在斷言語句處停止並輸出提醒語句;當bool表達式為True時,不做出放行。
assert bool表達式:提醒語句;