JAVA基礎-異常機制

基本概念

  • 異常就是"不正常"的含義,在Java語言中主要重程序執行中發生的不正常狀況
  • java.lang.Throwable類是Java語言中錯誤Error異常Exception的超類java

    • Error類主要用於描述Java虛擬機沒法解決的嚴重錯誤.一般沒法編碼解決.如JVM掛掉了
    • Exception類主要用於描述因編程錯誤或偶然外在因素致使的輕微錯誤,一般能夠編碼解決.如:0做爲除數等

異常的分類

  • java.lang.Exception類是全部異常的超類.主要分爲如下兩種程序員

    • RuntimeException-運行時異常,也叫做非檢測性異常
    • IOException和其它異常-其它異常,也叫做檢測性異常.所謂檢測性異常就是指在編譯階段都能被編譯器檢測出來的異常

RuntimeException類的主要子類編程

  • ArithmeticException類 - 算術異常
  • ArrayIndexOutOfBoundsException類 - 數組下標越界異常
  • NullPointerException類 - 空指針異常
  • ClassCastException類 - 類型轉換異常
  • NumberFormatException類 - 數字格式異常

異常的避免

  • 儘可能使用if條件判斷來避免異常的發生
  • 但過多的if條件判斷會致使程序的代碼加長,臃腫,可讀性差

異常的捕獲

語法格式

try{
     編寫可能發生異常的代碼;
}
catch(異常類型 引用變量名){
     編寫針對該類異常的處理代碼;
}
...
finally{
     編寫不管是否發生異常都要執行的代碼;
}

注意事項

  • 當須要編寫多個catch分支時,切記小類型應該放在大類型的前面
  • finally一般用於進行善後處理,如:關閉已經打開的文件等

執行流程

try{
    a;
    b; // 可能發生異常的語句
    c;
}catch(Exception e){
    d;
}finally{
    e;
}
  • 若沒有發生異常,執行流程是: a, b, c, e
  • 若發生異常,執行流程是: a, b, d, e

異常的拋出

基本概念

在某些特殊狀況下, 有些異常不能處理或不便於處理時, 就能夠將該異常轉移給該方法的調用者, 這種方法就叫異常的拋出.數組

當方法執行時出現異常, 則底層生成一個異常類對象拋出, 此時異常代碼後續的代碼就再也不執行編碼

語法格式

訪問權限 返回值類型 方法名稱(形參列表) throws 異常類型1, 異常類型2, ... {方法體;}指針

public void show() throws IOException{}

方法重寫的原則

  • 要求方法名相同, 參數列表相同, 以及返回值類型相同.從jdk1.5開始支持返回子類類型
  • 要求方法的訪問權限不能變小, 能夠相同或者變大
  • 要求方法不能拋出更大的異常

注意

子類重寫的方法不能拋出更大的異常, 不能拋出平級不同的異常, 但能夠拋出同樣的異常, 更小的異常, 以及不拋出異常code

經驗分享

  • 若父類中被重寫的方法沒有拋出異常時,則子類中重寫的方法只能進行異常的捕獲處理
  • 若一個方法內部又以遞進方式分別調用了好幾個其它方法,則建議這些方法內可使用拋出的方法處理到最後一層進行捕獲方式處理

自定義異常

基本概念

當須要在程序中表達年齡不合理的狀況時, 而Java官方又沒有提供這種針對性的異常, 此時就須要程序員自定義異常加以描述orm

實現流程

  1. 自定義xxxException異常類, 繼承Exception類或者子類
  2. 提供兩個版本的構造方法: 一個是無參構造方法, 另一個是字符串做爲參數的構造方法

異常的產生

throw new 異常類型(實參)
在須要拋出異常的加入上述語句便可.對象

throw new AgeException("年齡不合理");繼承

相關文章
相關標籤/搜索