java異常級別與捕獲的示例代碼

這個是jdk 1.8文檔中異常的種族描述

在這裡插入圖片描述

可以看出Java異常體系的根類是 Throwable, 當在java代碼中寫throw拋出異常時,後面跟的對象必然是Throwable或其子類的對象。
然後往下又分為 Exception(異常) 和 Error

其中Exception異常是指一些可以恢復的異常, 例如常見的NullPointerException空指針異常。

Error指的是一些致命的錯誤,無法通過程序代碼手段恢復的異常,例如OutOfMemoryError內存溢出錯誤。

如果能善用異常機制那麼代碼使用就會大大提高

本次模擬一個異常實例,驗證一下異常的捕獲
代碼如下

public class ExceptionTest {

    public static void main(String[] args) {

        try{
            int i = subtraction();
            System.out.println(i);
        }catch (Exception e){
            System.out.println("異常 Exception 被捕獲 異常信息為:"+e);
            e.printStackTrace();
        }

    }

    public static int subtraction(){
        int result = 0;
        try {
             result = 10 / 0;
        }catch (RuntimeException e){
            System.out.println("運行異常 RuntimeException 被捕獲 異常信息"+e);
            throw new RuntimeException("運行異常");
        }
        return result;
    }

}

我在調用一個方法的時候,該方法會拋出一個runtimeException 異常
然後我調用此方法的程序可能會有其他處理操作,也做瞭個try…catch 處理,然後驗證 主方法的catch是否會執行
結果證明會執行

在這裡插入圖片描述

因為被調用的方法使用throw new RuntimeException("運行異常");
把異常給拋出來瞭,上面抓到異常以後就會執行
我就是在工作中犯瞭此錯誤,
由於我在被調用方法catch的時候,給程序中的數據賦予,調用失敗的狀態,結果異常又被調用方給捕獲,然後調用方的catch又將數據狀態改為未知異常,影響瞭結果的判斷
最終我將調用方代碼合並上去,然後多做瞭一個捕獲

public static void main(String[] args) {

        try{
            int a = 100 / 0;
        }catch (RuntimeException e){
            System.out.println("運行異常 RuntimeException 異常信息為:"+e);
            throw new RuntimeException(e);
        }catch (Exception e){
            System.out.println("運行異常 Exception 異常信息為:"+e);
        }
    }

在這裡插入圖片描述

這次隻運行瞭RuntimeException 的catch 盡管異常已經拋出,但是Exception 的catch依舊是沒有執行

到此這篇關於java異常級別與捕獲的示例代碼的文章就介紹到這瞭,更多相關java捕獲異常內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: