Java 異常(二) 自定義異常
- 2020 年 6 月 4 日
- 筆記
Java 異常(二) 自定義異常
在開發中,為了適應業務的開發需求, 在 Java 中可以根據業務的異常情況自定義異常。
一、自定義異常
所有的自定義異常都必須是 Throwable 的子類,在自定義繼承時可以繼承於 Exception 或者它的子類。
二、自定義異常的分類
1、檢查性異常類:自定義異常類繼承於Exception。
2、運行時異常類:自定義異常類繼承於RuntimeException
三、Objects的非空判斷
Objects由一些靜態的實用方法組成,這些方法是null-save(空指針安全的)或 null-tolerant(容忍空指針的),那麼在它的源碼中,對對象為null的值進行了拋出異常操作。Objects通過調用requireNonNull(T obj)方法查看調用對象是否為null。
public static <T> T requireNonNull(T obj) {
if (obj == null) throw new NullPointerException(); return obj; }
從上面源碼可以看出,如果傳遞對象為 null,requireNonNull 方法會拋出 NullPointerException 異常,否則返回該對象。
四、實例
1、自定義檢查性異常類(MyException)
public class MyException extends Exception { public MyException() { } // 無參構造 public MyException(String msg) { super(msg); // msg : 異常提示資訊 } public MyException(Throwable throwable) { super(throwable);// throwable 類型 } }
2、自定義運行時異常類(MyRuntimeException)
public class MyRuntimeException extends RuntimeException { public MyRuntimeException() { } // 無參構造 public MyRuntimeException(String msg) { super(msg); // msg : 異常提示資訊 } public MyRuntimeException(Throwable throwable) { super(throwable);// throwable 類型 } }
3、自定義異常的使用實例
public class ExceptionDemo { public static void main(String[] args) throws Exception { int i = demo(3); System.out.println("i = " + i); } public static int demo(int index) throws MyException{ int[] arr = {1,2,3}; if(index >= arr.length || index < 0) throw new MyRuntimeException("您傳遞的索引錯誤,數組索引在0-2之間"); return arr[index]; } }
4、Objects的非空判斷實例
public static void main(String[] args) throws Exception { Integer i = 10; Integer i2 = Objects.requireNonNull(i); System.out.println(i2); }