java複習第6天---6.1---異常

java複習第6天---6.1---異常


目錄




內容

1、概念

  異常意味非正常,發生了意想不到的情況。在Java語言種,異常是類,產生異常就是拋出異常類的對象,Java處理異常的方式爲中斷處理。

2、異常體系

如圖 2-1:

  • Throwable:所有異常類的父接口

  • Error:錯誤類,表示嚴重的問題,正常程序不應該試圖捕獲的。

  • Exception:異常類(編譯期異常+運行前異常),出現問題,程序應該捕獲的異常

    • RuntimeException:運行時異常類
    • 編譯期異常:Exception類和任何不是RuntimeException的子類

3、異常處理

  異常處理5個關鍵字:try、catch、finally、throw和throws.

3.1、拋出異常

  • throw

    • 作用:在指定的地方拋出指定的異常
    • 格式:throw new xxxException(“異常原因”);
    • 注意
      1. throw語句必須放在方法內
      2. throw關鍵字後面new的必須是Exception或者Exception的子類
      3. throw拋出的異常對象,必須處理
        • throw如果拋出的RuntimeException或者RuntimeException的子類,可以不用處理,那麼JVM會幫我們執行默認處理,中斷程序,拋出異常。
        • throw拋出的是編譯期異常,那麼編譯不會通過,不會生成.class文件
  • 聲明異常throws

    • 當程序種拋出異常,但是我們沒有捕獲處理,那麼必須適用聲明異常throws,把異常拋給調用者

    • 格式:

        修飾符 返回值類型 方法名(參數列表) throws 異常 {...} 
      
    • 注意

      1. 異常聲明必須寫在方法參數列表後和方法體之前
      2. throws 後面必須是Exception或者Exception的子類
      3. 方法內如果拋出多個異常,那麼throws 也需聲明多個異常,如果多個異常有父子關係,那麼可以只拋出父異常
      4. 調用了聲明拋出異常的方法,必須對異常處理或者繼續throws ,直至上層調用者處理或者最終由JVM處理

3.2、try catch finally

異常處理格式:

	try {
		代碼塊
	}catch(...) {
		...
	}catch(...) {
		...
	}...
	finally {
		...
	}
  • 基本流程解析:

    1. 如果try代碼塊出現異常,則取匹配catch異常,執行相應的catch代碼塊;如果沒有出現異常,則不會取匹配catch
    2. 不管出不出現異常,程序最終會執行finally代碼塊種的內容
  • catch匹配規則

    1. 自上而下,一旦匹配成功不會向下匹配。
    2. 一般子類異常放置在上面,才能保證優先匹配子類異常
  • finally:一般用於釋放資源等等,比如打開的文件句柄。

  • 示例3.2-1:

      package exception.exception;
    
      public class TestException1 {
      	public static void main(String[] args) {
      		try {
      			int a  = 5/0;
      			int[] arr = {3, 22, 99};
      			arr[3] = 33;
      		}catch(ArithmeticException e) {
      			System.out.println(e);
      		}catch(IndexOutOfBoundsException e) {
      			e.printStackTrace();
      		}catch(Exception e) {
      			e.printStackTrace();
      		}finally {
      			System.out.println("finally 代碼塊");
      		}
      	}
      }
      測試結果:
      java.lang.ArithmeticException: / by zero
      finally 代碼塊
      註釋掉try代碼塊第一行測試結果
      java.lang.ArrayIndexOutOfBoundsException: 3
      finally 代碼塊
      	at exception.exception.TestException1.main(TestException1.java:8)
    

4、自定義異常

  以爲一些業務邏輯需求,現有的異常不能滿足要求,比如登陸註冊用戶名不符和要求等等,我們需要自定義;異常。

  • 格式:

      修飾符 class xxxException extends Exception或者子類 {
      	public xxxException() {...} // 無慘構造
      	public xxxException(String e) {...};// 代參構造
      	...
      }
    
  • 注意:

    1. 自定義異常類一般以Exception結尾,表示是異常
    2. 自定義異常必須是Exception或者Exception的子類
    3. 自定義異常必須提供一個無慘構造和一個帶參構造

後記

本項目爲參考某馬視頻開發,相關視頻及配套資料可自行度娘或者聯繫本人。上面爲自己編寫的開發文檔,持續更新。歡迎交流,本人QQ:806797785

前端項目源代碼地址:https://gitee.com/gaogzhen/vue-leyou
    後端JAVA源代碼地址:https://gitee.com/gaogzhen/JAVA

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章