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

服務器之家:專注于服務器技術及軟件下載分享
分類導航

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

服務器之家 - 編程語言 - Java教程 - Java異常基礎知識解析

Java異?;A知識解析

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

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

Java程序運行的非正?,F象叫做運行錯誤,根據其性質可分為兩類:錯誤(Error)和異常(Exception); 他們有一個共同的父類(也是所有異常的頂級父類):Throwable。

異常類結構

Java異常基礎知識解析

Error

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

一個常見的錯誤為Java虛擬機錯誤(VirtualMachineError),當JVM不再有繼續執行操作所需的內存資源時,將出現OutOfMemoryError。這些異常發生時,Java虛擬機(JVM)一般會選擇線程終止。

Exception

Exception(異常)作為一個對象使用,由Java程序拋棄或處理;通常異常產生的原因有:代碼或調用代碼有錯,操作系統資源不可用,公共語言運行庫遇到意外;

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

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

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

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

可查異常和不可查異常

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

可查異常

可查異常:對應非運行時異常,編譯器編譯程序時可以檢查預計到其中的錯誤,這種異常必須處理,兩種處理方式:try-catch語句捕獲異?;騮hrows子句聲明拋出異常,在方法體外頭部聲明拋出異常類型(使用throws拋出Exception),調用者可選擇處理接收到的異常。

說到這兩種處理方式,要說到Java異常處理的5個關鍵字:try、catch、finally、throws、throw

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

try、catch、finally三個語句塊不能單獨出現,三者可以組合為:try-catch/try-catch-finally/try-finally。

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

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

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

?
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)

首先,在方法體內部使用throw拋出異常;

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

示例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("用例約束條件獲取異常,可能原因:約束類型或約束名稱錯誤");
        }
    }
}

不可查異常

不可查異常:包括錯誤Error和運行時異常RuntimeException

運行時異常在程序編譯時可以通過,不能通過靜態語法檢測出來哪些函數可能拋出異常,在運行時才能發現異常(即取決于運行時狀態,被運行態決定);

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

總結

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 午夜一级毛片看看 | 国产精品短视频 | 日本在线观看免费高清 | 国产精品欧美亚洲韩国日本 | 国产精品九九免费视频 | 高h短篇辣肉各种姿势bl | 成年人视频在线 | 99热最新 | 日本一区视频在线 | 亚洲高清视频在线观看 | 国产三级跑 | 欧美一区欧美二区 | 99久久精品6在线播放 | 国产免费看视频 | 无码11久岁箩筣 | 欧美极品摘花过程 | 色戒完整版2小时38分钟 | 国产目拍亚洲精品一区二区三区 | 亚洲男女网站 | 精品videoss另类日本 | 好大好粗好舒服 | 色姑娘久久 | acg火影忍者熟密姬纲手h | 免费的毛片视频 | 国产欧美一区二区精品性色99 | 无人区在线观看免费完整版免费 | 精品亚洲视频在线观看 | 日韩中文字幕一区 | 国产成人一区二区三区在线视频 | 男人插曲女人身体 | 波多野结衣之双方调教在线观看 | 亚洲情射| 日本高清视频一区二区 | 69成人网 | 毛片免费全部免费观看 | 久久免费特黄毛片 | 日韩成人免费 | 女上男下gifxxoo动态视频 | 强漂亮白丝女教师小说 | 欧美视频黑鬼大战白妞 | 国精视频一区二区视频 |