1. 程式人生 > >Java中的異常處理、泛型!圖文講解

Java中的異常處理、泛型!圖文講解

 

1.異常: 非正常的情況,改變程式的執行流程

  • 堆疊提示順序

Throwable

  • Error 錯誤用程式碼處理不了
  • Exception異常 用程式碼可以處理執行時異常:RuntimeException 類和它的子類。編譯可以通過,在執行期使程式中斷了。
    • 非執行時異常(手檢異常):
    • Exception類和它的部分子類。
    • 編譯期 出現的問題 ,必須處理。

 

            

*空指標就是沒有物件!**空指標就是沒有物件!**空指標就是沒有物件!*

2.異常處理方式:

  • try-catch
  • 語法:

Try{

    可以會出現異常的程式碼

}catch(異常類型別 物件名)}

處理物件

}

  • 情況:
    • 沒有異常。Try 執行了,catch沒執行
    • 異常型別匹配。Try執行了,catch也執行了。
    • 異常型別不匹配。Try也執行了,catch也執行了。
  • try- catch-finally

Try{

   會出現異常的程式碼;

   }catch{}

                      

 

  • Throw拋異常:之間拋異常 如果 丟擲的 執行時異常,可以不用throws宣告
  • 自定義異常
    • 除錯:設定斷點;
      • 單步執行;
      • F6 單步跳過;
      • F5單步跳入;
  • 發現和解決問題。

方法重寫:子類,例項方法,名相同。引數一致,返回值型別一致,訪問許可權不能比父類更嚴格,異常範圍不能 比父類更大。

  • 型別引數:用一個大寫字母
    •          T ->Type
    •          K –>Key
    •          V->Value
    •          E->Element
  • 可以定義多個型別引數
  • 原生型別 raw tyoe
  • 一個型別的後邊沒有指定具體這樣的泛型型別 稱為原生類。

3.泛型

概念:引數化型別

型別引數:

  • 定義時:形式型別引數
  • 應用時:實際型別引數:(必須是引用型別)
    • 引數化型別:型別<實際型別引數>
    • 好處:
      • 在編譯期進行型別檢查;
      • 型別不確定。

定義泛型類:class類名<型別引數>{

}

  • 萬用字元:?   無界萬用字元   匹配   任意型別

           ?  extends上限類 匹配   上限類 和下限的子類

           ?   super 下限類 匹配    下限類 和 下限類的父類

  • 型別引數 和 萬用字元的區別:
    • 型別引數 可以表示一中了型別,泛型型別;萬用字元不能表示一種型別。
    • 型別引數 只能指定上限和下限;
    • 型別引數 可以指定多個上限;統配符,不能指定多個上限。
  • 泛型構造器
  •   泛型方法
  • 擦除原則:①引數化型別。擦除後為 原生型別
  •           Point3<String> p; ->Point3 p;
  •           ②型別引數:1)無界型別引數,擦除後為Object class Point<T>{}->Point<Object>{類體部分都用Object}變成Objuect x;
  •           2)有一個上限的型別引數,用上限來替換:<T extends A ->A
  •           3)有多個上限,由第一個上限來替換;<T extenfs A & B>  ->A