Java基礎-異常
異常
異常指的是運行期出現的錯誤,也就是當程序開始執行以後執行期出現的錯誤
1檢查性異常:最具代表的檢查性異常是用戶錯誤或問題引起的異常,這是程序員無法預見的。例如要打開一個不存在文件時,一個異常就發生了,這些異常在編譯時不能被簡單地忽略。
2運行時異常: 運行時異常是可能被程序員避免的異常。與檢查性異常相反,運行時異常可以在編譯時被忽略。
3錯誤: 錯誤不是異常,而是脫離程序員控制的問題。錯誤在代碼中通常被忽略。例如,當棧溢出時,一個錯誤就發生了,它們在編譯也檢查不到的。
空指針異常 NullPointerException
數組下標越界異常 ArrayIndexOutOfBoundsExecption
類型轉換異常 ClassCastException
算數異常 ArithmeticException
異常方法
下面的列表是 Throwable 類的主要方法:
檢查異常: 文件異常 IOException SQL異常SQLException
拋出異常:java程序執行過程中發生異常事件,可以生成一個異常類,該異常類封裝了異常事件的信息並將提交給java運行時系統,系統默認直接打印出來。
捕獲異常:java運行時系統收到異常對象時,會尋找能處理這異常的代碼並把當前異常對象交於處理,這一過程稱為捕獲異常。
try-catch 以及 try-catch-finally
Try{
//一些會拋出異常的方法
}catch(Exception e){
//處理該異常的代碼塊 從子類到父類
}catch(Exception2 e){
}finally {
//最終將要執行的代碼
}
finally 關鍵字用來創建在 try 代碼塊後面執行的代碼塊。
無論是否發生異常,finally 代碼塊中的代碼總會被執行。
throw throws
如果一個方法沒有捕獲一個檢查性異常,那麽該方法必須使用 throws 關鍵字來聲明。throws 關鍵字放在方法簽名的尾部。
也可以使用 throw 關鍵字拋出一個異常,無論它是新實例化的還是剛捕獲到的。
聲明將要拋出的任何異常(聲明)
Public void 方法名(參數列表)
throws 異常類別{
//調用拋出異常的方法或者:
throw new Execption();
}
聲明自定義異常
在 Java 中你可以自定義異常。編寫自己的異常類時需要記住下面的幾點。
所有異常都必須是 Throwable 的子類。
如果希望寫一個檢查性異常類,則需要繼承 Exception 類。
如果你想寫一個運行時異常類,那麽需要繼承 RuntimeException 類。
通用異常
在Java中定義了兩種類型的異常和錯誤。
JVM(Java虛擬機) 異常:由 JVM 拋出的異常或錯誤。例如:NullPointerException 類,ArrayIndexOutOfBoundsException 類,ClassCastException 類。
程序級異常:由程序或者API程序拋出的異常。例如 IllegalArgumentException 類,IllegalStateException 類。
異常總結
1 在運行異常程序的時,采用邏輯去合理規避同時輔助try-catch處理
2 在多重catch 塊後面,可以加上一個catch(Exception)來處理可能被遺漏的異常
3 對於不確定的代碼,也可以加上try-catch,處理潛在的異常
4 盡量去處理異常,切忌只是簡單的去調用printStackTrace()去打印輸出
5 具體如何處理異常,要根據不同的業務需求和異常類型去決定
6 盡量添加finally 語句去釋放占用的資源 (數據庫)
7重寫方法需要拋出與原方法所拋出異常類型一致的異常 或者不拋出異常
Java基礎-異常