【從零開始學Java筆記】異常處理

大家可以關(guān)注作者的賬號,關(guān)注從零開始學Java筆記文集。也可以根據(jù)目錄前往作者的博客園博客進行學習。本片文件將基于黑馬程序員就業(yè)班視頻進行學習以及資料的分享,并記錄筆記和自己的看法。歡迎大家一起學習和討論。

【從零開始學Java筆記】目錄

什么是異常?

異常是指不正常,我們在代碼的時候出現(xiàn)的編譯或者運行時的錯誤。我們在寫代碼的時候,經(jīng)常的出現(xiàn)一些小問題, 那么為了方便我們處理這些問題,java為我們提供了異常機制。異常包含了錯誤的類型、原因以及位置
異常的體系結(jié)構(gòu):
Throwable (最項層)
Error :出現(xiàn)的不能夠處理的嚴重問題
Exception:可以處理的問題

異常的處理方式

1.jvm處理異常的方式:
如果出現(xiàn)異常我們沒有處理,jvm會幫我們進行處理,他會把異常的類型,原因還有位置顯示在命令行,并且還終止了程序,異常后面的代碼將不在執(zhí)行。

2.捕獲處理
try...catch語句
格式:

 try {
  有可能出現(xiàn)問題的代碼;
} catch(ArithmeticException ae) {
  處理異常;
    }

try...catch的執(zhí)行順序:
首先執(zhí)行try語句,如果發(fā)現(xiàn)異常,異常下面的代碼不在執(zhí)行,直接跳入catch語句中,catch語句結(jié)束后,整個try...catch結(jié)束,如果沒有發(fā)現(xiàn)異常,try語句執(zhí)行結(jié)束后,try...catch直接結(jié)束, 不在執(zhí)行catch語句

3.拋出去
當我們不想處理異常,或者沒有能力處理的時候,我們可以選擇拋出異常,誰調(diào)用方法誰處理異常,使用關(guān)鍵字throws在方法的聲明出拋出異常

舉例:

import java.io.FileWriter;
import java.io.IOException;


public class ExceptionDemo2 {
    public static void main(String[] args) throws Exception {
        //method();
        
        function();
        
    }
    
    public static void function() throws Exception {
        FileWriter fw = new FileWriter("a.txt");
    }

    private static void method() {
        try {
            System.out.println(1);
            //System.out.println(2 / 0);
            System.out.println(2);
        } catch(ArithmeticException ae) {
            System.out.println("除數(shù)不能為0");
        }
        
        System.out.println(3);
    }

}

處理多個異常

如何處理多個異常:
1.可以使用多個try.. .catch語句
2.使用一個try和多個catch

多個catch之間的順序:
多個catch之間可以有子父類
平級之間沒有順序關(guān)系
如果有子父類,父類異常必須放在后面

Throwable類

public class ExceptionDemo3 {
    public static void main(String[] args) {
        try {
            System.out.println(2 / 0);
        } catch (ArithmeticException e) {
            // String getMessage() : 原因
            // System.out.println(e.getMessage());

            // String toString() 類型和原因
            // System.out.println(e.toString());

            // void printStackTrace():類型原因和位置,和jvm處理不同,不會終止程序運行
            e.printStackTrace();
        }

        // System.out.println("hello");
    }

}

finally

finally:組合try... catch使用,用于釋放資源等收尾工作,無論try...catch語句如何執(zhí)行,finally的代碼定會執(zhí)行,用于處理一些收尾工作,例如釋放資源

try {
    有可能出現(xiàn)問題的代碼;
} catch(異常對象) {
    處理異常;
} finally {
    釋放資源;
    清理垃圾;
}

異常的分類

運行時期異常: RuntimeException的子類就是運行時期異常,在編譯時期可以自由選擇處理或者不處理
編譯時期異常:是Exception的子類,非RuntimeExcpetion的子類,在編譯時期必須處理

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容