一、JAVA異常簡介
1》異常簡介:
a、異常處理的作用
b、Java異常體系結構的簡介
2》處理異常:
a、try-catch以及try-catch-finally
b、拋出異常
c、自定義異常
d、異常鏈
3》異常定義:
有易於常態,和正常情況不一樣,有錯誤出現,阻止當前方法或作用域,稱之爲異常。
4》異常的體系結構
Throwable----->Error :不常見的錯誤類型,通常指系統錯誤,比如:虛擬機錯誤或線程死鎖(程序終結者)
|
|------------->Exception:異常,比如指編碼、環境、用戶操作輸入出現問題
|-------->非檢查異常:RuntimeException:比如空指針異常、數組下標異常、算數異常
|-------->檢查異常:比如:文件異常、SQL異常
二、處理異常
1》try {
//一些會拋出異常的方法
}catch(Exception e){
//處理該異常的代碼塊
}
如果try中確實發生異常了,程序將會終止執行,程序的控制權將被移交給catch塊中的異常處理程序。
catch如何處理呢?可以發出警告,或者記錄錯誤日誌。
2》多重try-catch塊
處理不同的異常
注:catch塊是先子類後父類。
3》try-catch-finally
try {
//一些會拋出異常的方法
}catch(Exception e){
//處理該異常的代碼塊
}...(n個catch塊)...{
}finally{
//最終將要執行的一些代碼
}
三、Java中異常拋出以及自定義異常
1》異常拋出
throw:將產生的異常拋出(動作)
throws:寫在方法名和方法參數表之後,方法體之前,可拋出多種異常,每個異常用 , 隔開
聲明將要拋出何種類型的異常(聲明)
public void 方法名(參數列表) throws 異常列表{
//調用會拋出異常的方法或者:
throw new Exception() ;
}
2》自定義異常
自定義異常:自己定義的異常類型
class 自定義異常類 extends 異常類型{}
四、異常鏈
1》定義:捕獲的異常包裝成新的異常,新的異常添加對原始異常的引用,再把新的異常拋出。
五、實際應用的經驗和總結
1》處理運行時異常時,採用邏輯去合理規避同時輔助try-catch處理
2》在多重catch塊後面,可以加一個catch(Exception)來處理可能會被遺漏的異常
3》對於不確定的代碼,也可以加上try-catch,處理潛在的異常
4》儘量去處理異常,切忌只是簡單的調用printStackTrace()去打印輸出,可加以適當的輔助,例如:業務的回滾
5》具體如何處理異常,要根據不同的業務需求和異常類型去決定。
6》儘量添加finally語句塊去釋放佔用的資源