java基礎檢查和未檢查異常處理詳解

程序在運行時如果出錯,編譯器會拋出異常,異常如果沒有被捕捉處理,程序會終止運行。異常分為未檢查異常和已檢查異常,以下對這兩類異常做進一步說明。

檢查異常

已檢查異常(checked exceptions),編譯器強制要求捕獲並處理可能發生的異常,不處理就不能通過編譯,如:IOException、SQLException以及用戶自定義的Exception異常。如下圖所示,程序運行時會因為IO等錯誤導致異常,要求處理異常,需要手動處理關閉釋放資源。

在這裡插入圖片描述

繼續拋出,通過throws exception拋出,代碼如下:

public static void readFile() throws FileNotFoundException {
        String filename = "D:\\demo1.txt";
        File file = new File(filename);
        BufferedReader reader = null;
        StringBuffer sbf = new StringBuffer();

        reader = new BufferedReader(new FileReader(file));
    }

在方法使用 throws FileNotFoundException ,將異常向上拋。

使用try catch或try catch finally對異常進行捕獲然後進行處理,代碼如下:

    public static void main(String[] args) {
        String filename ="D:\\demo.txt";
        File file =new File(filename);
        BufferedReader reader=null;
        StringBuffer sbf = new StringBuffer();

        try {
            reader = new BufferedReader(new FileReader(file));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } finally {
        }
    }

未檢查異常

未檢查異常(unchecked exceptions),這類異常也叫RuntimeException(運行時異常),編譯器不要求強制處置的異常,如:NullPointerException,IndexOutOfBoundsException,VirtualMachineError等異常。如:以下代碼向上拋出異常,但調用時編譯器並不強制要求處理異常

public static void convert(String str) throws NumberFormatException{
        Long num = Long.parseLong(str);
        System.out.println(num);
    }

調用方代碼如下:

public static void main(String[] args) {
        convert("ww123");
    }

編譯器並未出現強制要求使用處理異常,因為NumberFormatException異常是RuntimeException(運行時異常)。未檢查異常通常處理方法為捕獲、繼續拋出和不處理,這類異常通常輸出至控制臺,編程人員手動的去查找問題。

總結

檢查異常是編譯器強制要求捕獲並處理可能發生的異常,包括IOException、SQLException以及用戶自定義的Exception等;未檢查異常是編譯器不強制要求捕獲並處理可能發生的異常,包括RuntimeException類異常。JDK常見異常類圖如下:

在這裡插入圖片描述

以上就是java基礎檢查和未檢查異常處理詳解的詳細內容,更多關於java檢查和未檢查異常處理的資料請關註WalkonNet其它相關文章!

推薦閱讀: