一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java異常基礎(chǔ)知識(shí)解析

Java異常基礎(chǔ)知識(shí)解析

2021-03-11 14:17Terence_Jing Java教程

這篇文章主要介紹了Java異常基礎(chǔ)知識(shí)解析,具有一定借鑒價(jià)值,需要的朋友可以資參考下。

Java程序運(yùn)行的非正常現(xiàn)象叫做運(yùn)行錯(cuò)誤,根據(jù)其性質(zhì)可分為兩類:錯(cuò)誤(Error)和異常(Exception); 他們有一個(gè)共同的父類(也是所有異常的頂級(jí)父類):Throwable。

異常類結(jié)構(gòu)

Java異常基礎(chǔ)知識(shí)解析

Error

Error(錯(cuò)誤)由JVM生成并拋棄不做處理;此類錯(cuò)誤通常與代碼和執(zhí)行的操作無關(guān),是虛擬機(jī)中出現(xiàn)了比較嚴(yán)重的問題,程序本身無法解決(常見的錯(cuò)誤有死循環(huán)、內(nèi)存泄漏等)。

一個(gè)常見的錯(cuò)誤為Java虛擬機(jī)錯(cuò)誤(VirtualMachineError),當(dāng)JVM不再有繼續(xù)執(zhí)行操作所需的內(nèi)存資源時(shí),將出現(xiàn)OutOfMemoryError。這些異常發(fā)生時(shí),Java虛擬機(jī)(JVM)一般會(huì)選擇線程終止。

Exception

Exception(異常)作為一個(gè)對(duì)象使用,由Java程序拋棄或處理;通常異常產(chǎn)生的原因有:代碼或調(diào)用代碼有錯(cuò),操作系統(tǒng)資源不可用,公共語言運(yùn)行庫遇到意外;

異常分為由虛擬機(jī)生成的運(yùn)行時(shí)異常(RuntimeException,如空指針、數(shù)組越界)和程序意外造成的非運(yùn)行時(shí)異常(如IOException);

運(yùn)行時(shí)異常:程序可以選擇捕獲處理或不處理直接拋掉;常見的運(yùn)行時(shí)異常有算法溢出(超出數(shù)值表達(dá)范圍)、除數(shù)為零、內(nèi)存溢出、空指針、無效參數(shù)等,此類異常是程序本身編程出錯(cuò),可以通過調(diào)整異常代碼運(yùn)行方向,使程序繼續(xù)運(yùn)行,直至正常結(jié)束;

非運(yùn)行時(shí)異常:RuntimeException類型意外的異常都叫做非運(yùn)行時(shí)異常,從程序語法角度講是必須進(jìn)行處理的異常,如果不處理,程序就不能編譯通過;常見的非運(yùn)行異常有IOException,例如:資源文件找不到等,是程序碰到意外情況無法執(zhí)行成功。

注意:異常和錯(cuò)誤的區(qū)別---異常能被程序本身可以處理,錯(cuò)誤是無法處理。

可查異常和不可查異常

Java異常(ErrorandException)根據(jù)程序是否能夠編譯通過可以分為另外兩類:可查異常(checkedexceptions)和不可查異常(uncheckedexceptions)。

可查異常

可查異常:對(duì)應(yīng)非運(yùn)行時(shí)異常,編譯器編譯程序時(shí)可以檢查預(yù)計(jì)到其中的錯(cuò)誤,這種異常必須處理,兩種處理方式:try-catch語句捕獲異常或throws子句聲明拋出異常,在方法體外頭部聲明拋出異常類型(使用throws拋出Exception),調(diào)用者可選擇處理接收到的異常。

說到這兩種處理方式,要說到Java異常處理的5個(gè)關(guān)鍵字:try、catch、finally、throws、throw

1、使用try-catch語句處理捕捉(方法頭部不用聲明)

try、catch、finally三個(gè)語句塊不能單獨(dú)出現(xiàn),三者可以組合為:try-catch/try-catch-finally/try-finally。

catch塊可以有多個(gè),此時(shí)只能從上到下匹配其中一個(gè)catch塊代碼;

finally最多一個(gè),三個(gè)語句塊中定義的變量不可相互訪問。

在該部分中,使用的是try-catch組合來處理可查異常,將異常向上拋出,實(shí)例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public XMLReaderHDU(String xmlFile){
    super();
    this.xmlFile = xmlFile;
    this.fileName=StaticConfig.umlPathPrefixHDU;
    try
       {
        SAXReader reader=new SAXReader();
        Document dom=reader.read(xmlFile);
        root=dom.getRootElement();
    }
    catch(Exception e1)
       {
        Handle1……
    }
    catch(Exception e2)
       {
        Handle1……
    }
}

2、使用throws子句聲明拋出(在方法體外頭部聲明拋出異常類型:使用throws拋出Exception)

首先,在方法體內(nèi)部使用throw拋出異常;

然后,在方法體外頭部聲明,使用throws拋出內(nèi)部拋上來的異常;

示例1:try-catch拋出異常

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public XMLReaderHDU(String xmlFile) throws Exception {
    super();
    this.xmlFile = xmlFile;
    this.fileName=StaticConfig.umlPathPrefixHDU;
    try
       {
        SAXReader reader=new SAXReader();
        Document dom=reader.read(xmlFile);
        root=dom.getRootElement();
    }
    catch(Exception e1)
       {
        throw new Exception(e1);
    }
}

示例2:throw-throws 自定義異常

?
1
2
3
4
5
6
7
8
9
10
private List<UseCase> readUCInformation() throws Exception {
    if(e1.hasContent())
       {
        if(e1.element("name").getText().equals("preCondition")){
            uc.setPreCondition(e1.elementText("content"));
        } else{
            throw new Exception("用例約束條件獲取異常,可能原因:約束類型或約束名稱錯(cuò)誤");
        }
    }
}

不可查異常

不可查異常:包括錯(cuò)誤Error和運(yùn)行時(shí)異常RuntimeException

運(yùn)行時(shí)異常在程序編譯時(shí)可以通過,不能通過靜態(tài)語法檢測出來哪些函數(shù)可能拋出異常,在運(yùn)行時(shí)才能發(fā)現(xiàn)異常(即取決于運(yùn)行時(shí)狀態(tài),被運(yùn)行態(tài)決定);

可以選擇捕獲處理或顯示的拋除不處理(mustbecaughtordeclearedtobethrown)。這些異常一般是由程序邏輯錯(cuò)誤引起的,程序應(yīng)該從邏輯角度盡可能避免這類異常的發(fā)生。

總結(jié)

以上就是本文關(guān)于Java異常基礎(chǔ)知識(shí)解析的全部內(nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

原文鏈接:http://blog.csdn.net/csdn_terence/article/details/76222772

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国内精品 大秀视频 日韩精品 | 草莓社区 | 白丝美女同人18漫画 | 欧美老肥妇bbbw | 99热自拍| 成人性用品 | 涩涩漫画软件 | 天天操天天射天天色 | 男人操女人动图 | 色播影院性播影院私人影院 | 亚久久伊人精品青青草原2020 | 四虎国产一区 | 欧美日韩国产成人综合在线影院 | 王雨纯羞羞 | 强行扒开美女大腿挺进 | 国产精品自在线 | 午夜影院网站 | 亚洲精品成人a | 好紧好爽再叫浪一点点潘金莲 | 精品破处 | 国产精品酒店视频免费看 | 91青青国产在线观看免费 | 欧美一级h| 天天久久综合网站 | 91无套极品外围在线播放 | 欧美日韩一区二区三区在线播放 | 欧美一卡二卡科技有限公司 | 好湿好滑好硬好爽好深视频 | 91你懂的 | 久久日韩精品无码一区 | 亚久久伊人精品青青草原2020 | 国产激情一区二区三区四区 | 麻豆在线传煤 | 久草在线精彩免费视频 | 久久毛片免费看一区二区三区 | 国产精品 视频一区 二区三区 | 成年人在线观看视频 | 大香焦在线观看 | 日本红色高清免费观看 | 美女扒开两腿露出尿口的视频 | 日韩在线观看一区二区不卡视频 |