JAVA中的異常

異常

異常是程序中的錯誤,但並非全部的錯誤都是異常,而且錯誤有時候是能夠避免的java

1.異常的分類

檢查時異常|編譯時異常:編譯期間出現的異常.其中最具表明的檢查性異常是用戶錯誤或者問題引發的異常.若是不作處理,程序就沒法繼續向下執行數組

運行時異常:出如今程序運行期間,能夠經過程序的健壯性處理spa

2.Exception的層次

java.lang.Exception類是全部異常類的父類指針

而Exception是Throwable類的子類,其中Throwable的子類還有一個Error,但Error通常有虛擬機生成並脫出,程序不關注code

3.java中的異常

java定義了一些異常類在java.lang標準包中.orm

標準運行時異常類的子類是最多見的異常類.因爲java.lang包是默認加載到全部java程序中對象

下面列出一些java中的運行時異常繼承

  • ArithmeticException

出現異常的運算條件時,拋出該異常.例如(1/0)接口

  • ArrayIndexOutOfBoundsException

數組下標越界異常,數組下標爲負或者大小超出數組大小是拋出字符串

  • ClassCastException

類型轉換問題

試圖把對象強制轉換爲不是實例的子類時,拋出該異常

  • NegativeArraySizeException

試圖建立大小爲負的數組是拋出該異常

  • NullPointerException

空指針異常 當引用指向爲空時拋出該異常

  • NumberFormatException

試圖將字符串轉換成一種數值類型,可是該字符串不能轉換爲適當格式時,拋出該異常

下面列出一些java中檢查時異常

  • ClassNotFoundException

應用程序試圖加載類時,找不到相應的類,拋出異常

  • InstantiationException

當試圖使用Class類中的newInstance方法建立一個類的實例,而指定的類對象由於是一個接口或者是一個抽象類而沒法實例化時,拋出這個異常

4.異常處理

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,那麼大範圍的異常須要排在後面

5.聲明自定義異常

在java中能夠自定義須要的異常.但須要注意如下幾點

  • 全部異常都必須是Throwable的子類
  • 若是但願寫一個檢查性異常,則須要繼承Exception類,只繼承Exeption類建立的異常類是檢查時異常
  • 若是你想寫一個運行時異常類,那麼須要繼承RuntimeException類

例子

class NameNullException extends RuntimeException 複製代碼
相關文章
相關標籤/搜索