運行時異常與檢查異常區別

首先,思考一個問題,看下面三個代碼,當拋出異常時,後面的代碼還會運行嗎,是否要在異常後加上return語句?

//代碼1
public static void test() throws Exception  {
    throw new Exception("參數越界"); 
    System.out.println("異常後"); //編譯錯誤,「無法訪問的語句」
}
//代碼2
try{
    throw new Exception("參數越界"); 
}catch(Exception e) {
    e.printStackTrace();
}
System.out.println("異常後");//可以執行
//代碼3
if(true) {
    throw new Exception("參數越界"); 
}
System.out.println("異常後"); //拋出異常,不會執行

總結:

1.代碼1,編譯無法通過,提示“無法訪問的語句”。

2.代碼2,異常被捕捉,可以被執行。

3.代碼3,可以通過編譯,但是後面的語句不會被執行。

運行時異常與檢查異常的區別:

               

1.運行時異常是RuntimeException類及其子類,是非檢查性異常,如空指針異常、數組下標越界異常、類型轉換異常、算術異常。運行時異常與檢查性異常最大的區別在於運行時異常不用對其捕獲,JVM會自行處理,會自動catch運行時異常並停止線程,打印異常。如果產生運行時異常,相當於bug了,則需要修改代碼避免異常,當然也可以手動拋出或者捕捉異常。

2.檢查性異常是Exception類本身及其子類中除運行時異常之外的其他異常,檢查性異常必須通過throws進行申明拋出,或者通過try-catch進行捕捉處理,否則不能通過編譯,如IO異常,SQL異常等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章