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); }