日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無先后,達(dá)者為師

網(wǎng)站首頁 編程語言 正文

淺談異常分類及異常處理機(jī)制

作者:顧家明ime 更新時(shí)間: 2022-09-05 編程語言

文章目錄

  • 前言
  • 一、異常有哪些種類?
  • 二、異常處理機(jī)制
    • 1.當(dāng)前方法聲明拋出異常
    • 2.使用try...catch
  • 總結(jié)


前言

在我們寫代碼的時(shí)候,經(jīng)常會碰到異常,本篇文章淺談異常的種類及處理機(jī)制


一、異常有哪些種類?

頂級異常:Throwable

子類異常:Error,如OutOfMemoryError(OOM,內(nèi)存溢出);Exception(這是我們常見的)

而在Exception常見的子類有IOException,RuntimeException

RuntimeException常見的三大異常:

NullPointerException-空指針異常

ClassCastException-類型轉(zhuǎn)換異常

IndexOutOfBoundsException-下標(biāo)越界異常

下圖便于理解,各異常的關(guān)系(只列舉了部分,常用到的異常)


二、異常處理機(jī)制(誰使用誰處理)

1.當(dāng)前方法聲明拋出異常

代碼如下(示例):

public class Demo01 {

    public static void main(String[] args) throws FileNotFoundException {

        FileInputStream fis = new FileInputStream("./test.java");
    }
}

如上只是為了演示,不建議在main方法上拋出異常,在main方法上拋出異常,不便處理異常?

2.使用try...catch代碼塊包裹此方法的調(diào)整代碼

代碼如下(示例):

public class Demo02 {

    public static void main(String[] args){

        try {
            FileInputStream fis = new FileInputStream("./test.java");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
}

如上使用try...catch處理異常:alt+enter選擇try/catch即可或選中代碼ctrl+alt+t選擇try/catch

另外try...catch有時(shí)還會搭配finally一起使用,即try...catch...finally,以后單獨(dú)演示


總結(jié)

1.如果調(diào)用的方法拋出了"非RuntimeException異常",則必須處理,遵循一個(gè)原則:誰調(diào)用誰處理

2.出現(xiàn)異常必須處理,如果不處理,編譯有錯(cuò)誤,程序無法運(yùn)行

3.在我們自己寫的方法中,如果出現(xiàn)異常,一般的做法是將異常拋出,誰調(diào)用誰處理,如下演示

class Demo03 {

    public void methodA() throws FileNotFoundException {
        //將異常拋出
        FileInputStream fis = new FileInputStream("./test.java");
    }

    public void methodB() throws FileNotFoundException {
        //調(diào)用了A方法,但是A方法將異常拋出,沒有處理
        //所以調(diào)用A方法有異常存在
        methodA();
    }

    public void methodC(){
        try {
            //由于B方法依然將異常拋出,所以調(diào)用B方法仍存在異常
            //這里選擇了處理異常
            methodB();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    public void methodD(){
        //由于C方法對異常進(jìn)行了處理,所以調(diào)用C方法,不需要處理異常
        methodC();
    }
}

原文鏈接:https://blog.csdn.net/weixin_72125569/article/details/126683008

欄目分類
最近更新