Java 異常(二) 自定義異常

學無止境發表於2020-06-04

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

相關文章