標籤:字元 cep 情況 排列 算術 解決 exception 轉換 調用
異常
一.行為的意外結果可以分為兩類
可以處理的意外結果稱為異常(Exception)
處理不了的意外結果稱為錯誤(Error)
異常是一中特殊的對象,類型為java.lang.Exception或器子類
二.處理
1.捕獲異常
try-->執行可能產生異常的代碼
catch-->捕獲異常
finally-->無論是否發生異常,代碼總能執行
2.聲明異常
throws-->聲明方法可能要拋出的各種異常
3.拋出異常
throw-->手動拋出異常
三.try-catch
情況一:
try(無異常) catch try-catch後代碼
| |
---------------------------
情況二:
try(有異常) catch ---->try-catch後代碼
| |
-->產生異常對象-->異常類型匹配-->
情況三:
try(有異常) catch ---->try-catch後代碼
|
--產生異常對象-->異常類型不符-->代碼中斷
四.在catch塊中處理異常
1.加入自訂處理資訊
System.err.ptintln(“自訂內容”)
2.調用方法輸出異常資訊
e.printStackTrace();
3.異常對象常用方法
String getMessage();
*返回異常資訊描述字串是printStackTrace()輸出資訊一部分
五.Java異常機制
1.代碼運行到可能出現異常時,由程式或Java拋出異常對象,異常對象會記錄相關資訊
2.異常對象拋出後,會去尋找異常處理的相關代碼(catch),如果找到異常結束
3.如果未找到,異常對象會繼續上拋,尋找異常處理代碼
4.如果到main還未找異常拋給到異常處理代碼,就會有main將異常拋給虛擬機器
5.異常拋出的每一層代碼都會中斷
六.常見異常類型
異常類型 說明
Exception 異常階層的父類
ArithmeticException 算術錯誤情形,如以0做除數
ArrayIndexOutBoundsException 數組下標越界
NullPointerException 嘗試訪問null對象成員
ClassNotFoundException 不能載入所需類
IllegalArgumentException 方法接收到非法參數
ClassCastException 對象強制類型轉換出錯
NumberFormatException 數字格式化轉換異常,如把“ABC”轉為數字
七.finally
1.是否發生異常都會執行finally塊中的代碼
2.唯一不執行的情況:System.exit(1);
八.存在return的try-catch-finally塊
try--->產生異常對象--->異常類型匹配--->進入catch--->
執行finally--->執行return退出方法
九.try、catch、finally使用規則
try{
//必須出現,且只能出現一次
}catch{
//可以出現0~n次,如果沒有catch就必須有finally
}finally{
//可以出現0~1次
}
十.多重catch塊
1.排列catch語句順序:先子類後父類
2.發生異常時按順序逐個匹配
3.只執行第一個與異常類型匹配的catch語句
十一.Java異常分類
1.運行時異常:在代碼編譯的時候不會進行檢測,在代碼運行時的過程中產生異常,
RuntimeException及其子類都屬於運行時異常,
還有ArithmeticException、NullPointeException、NumberFormatException
2.檢查異常/檢測異常:在代碼編譯的時候顯示必須處理,才能通過編譯器的編譯,
如:SQLException、ClassNoFoundException
十二.throw、throws
1.throws聲明某個方法可能拋出的各種異常
2.throws可以讓檢查異常通過編譯器的編譯,但沒有真正解決異常
3.throw手動拋出異常,並可以定義異常的資訊
4.throws可以聲明多個異常,多個異常之間用逗號隔開
十三.自訂異常
1.寫一個異常類,繼承Exception
2.手動實現Exception的構造方法
Java(五)