異常是程序中的錯誤,但並非全部的錯誤都是異常,而且錯誤有時候是能夠避免的java
檢查時異常|編譯時異常:編譯期間出現的異常.其中最具表明的檢查性異常是用戶錯誤或者問題引發的異常.若是不作處理,程序就沒法繼續向下執行數組
運行時異常:出如今程序運行期間,能夠經過程序的健壯性處理spa
java.lang.Exception類是全部異常類的父類指針
而Exception是Throwable類的子類,其中Throwable的子類還有一個Error,但Error通常有虛擬機生成並脫出,程序不關注code
java定義了一些異常類在java.lang標準包中.orm
標準運行時異常類的子類是最多見的異常類.因爲java.lang包是默認加載到全部java程序中對象
下面列出一些java中的運行時異常繼承
出現異常的運算條件時,拋出該異常.例如(1/0)接口
數組下標越界異常,數組下標爲負或者大小超出數組大小是拋出字符串
類型轉換問題
試圖把對象強制轉換爲不是實例的子類時,拋出該異常
試圖建立大小爲負的數組是拋出該異常
空指針異常 當引用指向爲空時拋出該異常
試圖將字符串轉換成一種數值類型,可是該字符串不能轉換爲適當格式時,拋出該異常
下面列出一些java中檢查時異常
應用程序試圖加載類時,找不到相應的類,拋出異常
當試圖使用Class類中的newInstance方法建立一個類的實例,而指定的類對象由於是一個接口或者是一個抽象類而沒法實例化時,拋出這個異常
a.關鍵字
throw:製造異常
throws:拋出異常,一個方法能夠拋出多個異常,多個異常之間之間使用逗號分開
try...catch:捕獲異常
try...catch使用:
try{
可能會出現異常的代碼
}catch(FileNotFoundException e){
若是出現這個異常會執行的代碼;
//打印異常的棧信息,標紅色的 //打印異常信息
e.printStackTrace();
}catch(NullPointerExcepti e){
若是出現這個異常會執行的代碼;
}....
finally{
不管是否出現異常,都會執行finally中的代碼
}
複製代碼
try ,catch,finally塊之間不能添加任何代碼
一旦try中出現異常了,try後面的代碼就都不會執行
一個try後面能夠跟一個或者多個catch
若是有多個catch,那麼大範圍的異常須要排在後面
在java中能夠自定義須要的異常.但須要注意如下幾點
例子
class NameNullException extends RuntimeException 複製代碼