1. 程式人生 > >第六章:異常機制

第六章:異常機制

() 不同 finall try arr 運行時 運行 ror 則無

第六章:異常機制
異常的定義

異常:在程序運行過程中出現的意外事件,導致程序中斷執行。


異常處理
try...catch

語法:
try{
//可能出現異常的代碼
}catch(異常類型 異常對象名){
//處理異常的代碼;
}
執行過程:
當try中的代碼異常發生時拋出一個異常對象,該異常對象與catch中異常類型進行匹配,匹配成功進入catch塊,否則不執行catch中代碼(相當於異常未被處理)。
程序只有當異常處理成功後才能繼續執行。


try...catch...catch

語法:
try{
//可能出現異常的代碼
}catch(異常類型1 對象名){
//處理代碼1;
}catch(異常類型2 對象名){
//處理代碼2
}....
執行過程:當try中代碼出現異常時,拋出一個異常對象,將該異常對象與catch塊中異常類型依次匹配,匹配成功執行其下catch塊中代碼。
註意:異常類型的範圍應該有小到大,先放子類異常類型,再父類異常類型。


try...catch...finally

語法:
try{
//可能出現異常的代碼
}catch(異常類型1 對象名){
//處理代碼1;
}catch(異常類型2 對象名){
//處理代碼2
}finally{
//會被執行的代碼
}
finally塊中代碼一定會執行,如果在try或catch塊中存在retrun語句,先執行finally中的代碼,然後執行return語句。
finally中代碼只有在退出程序(退出虛擬機)時才不會執行---->System.exit()


try...finally

語法:
try{
//可能出現異常的代碼
}finally{
//一旦會執行的代碼
}

finally塊中代碼經常用於資源的釋放,比如數據連接的關閉,IO流的關閉等。


throws和throw關鍵字

如果在處理異常的過程中希望將異常拋出,就需要throws和throw

throws和throw的區別
1.位置不同:throws用於方法聲明時,throw用於方法體中
2.類型不同(內容不同):
throws後跟的異常類型,throw後跟的異常對象
3.作用不同
throws在方法聲明時告知調用者該方法存在的異常類型,throw在方法體內拋出某個具體的異常對象。


異常類型

Throwable是所有錯誤和異常的父類。
--Error類:嚴重的錯誤
--Exception類:異常

異常的分類:
運行時異常(RuntimeException):不強制捕獲程序就可以通過編譯
常見的運行時異常
NullPointerException
ArrayIndexOutOfBounds
NumberFormatException
ClassCastException
InputMisMatchException
...
檢查異常:強制捕獲否則無法通過編譯
SQLException
ClassNotFoundException
IOException
...


自定義異常

當JDK提供的異常類型無法滿足需要時,就需要自定義異常。

自定義異常的步驟:
1.自定義異常類:繼承Exception或RuntimeException
2.在自定異常類的構造方法中調用父類的構造,傳入自定義異常信息
3.創建自定義異常對象
4.使用throw將異常對象拋出

第六章:異常機制