欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2017年12月25日 15:26:30   作者:Terence_Jing  
這篇文章主要介紹了Java異?;A(chǔ)知識解析,具有一定借鑒價值,需要的朋友可以資參考下。

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

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

Error

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

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

Exception

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

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

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

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

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

可查異常和不可查異常

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

可查異常

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

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

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

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

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

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

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

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拋出異常

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 自定義異常

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

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

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

總結(jié)

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

相關(guān)文章

  • 淺談SpringMVC的執(zhí)行流程

    淺談SpringMVC的執(zhí)行流程

    下面小編就為大家?guī)硪黄獪\談SpringMVC的執(zhí)行流程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理

    SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理

    這篇文章主要介紹了SpringBoot @ControllerAdvice 攔截異常并統(tǒng)一處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JAVA實現(xiàn)第三方短信發(fā)送過程詳解

    JAVA實現(xiàn)第三方短信發(fā)送過程詳解

    這篇文章主要介紹了JAVA實現(xiàn)第三方短信發(fā)送過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-09-09
  • Java實現(xiàn)雪花算法的原理和實戰(zhàn)教程

    Java實現(xiàn)雪花算法的原理和實戰(zhàn)教程

    這篇文章主要介紹了Java實現(xiàn)雪花算法的原理和實戰(zhàn)教程,本文通過語言表述和代碼的實現(xiàn)講解了該項算法,,需要的朋友可以參考下
    2021-06-06
  • Springmvc實現(xiàn)文件下載2種實現(xiàn)方法

    Springmvc實現(xiàn)文件下載2種實現(xiàn)方法

    這篇文章主要介紹了Springmvc實現(xiàn)文件下載2種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • Spring?Boot?實現(xiàn)Redis分布式鎖原理

    Spring?Boot?實現(xiàn)Redis分布式鎖原理

    這篇文章主要介紹了Spring?Boot實現(xiàn)Redis分布式鎖原理,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下
    2022-08-08
  • 類似Object監(jiān)視器方法的Condition接口(詳解)

    類似Object監(jiān)視器方法的Condition接口(詳解)

    下面小編就為大家?guī)硪黄愃芆bject監(jiān)視器方法的Condition接口(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • Java包裝類的概述與應(yīng)用

    Java包裝類的概述與應(yīng)用

    包裝類使用起來非常方便,但是沒有對應(yīng)的方法來操作這些基本數(shù)據(jù)類型,可以使用一個類,把基本類型的數(shù)據(jù)裝起來,在類中定義一些方法,我們可以使用類中的方法來操作這些基本類型的數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Java包裝類的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Java日常練習題,每天進步一點點(54)

    Java日常練習題,每天進步一點點(54)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-08-08
  • mybatis plus使用redis作為二級緩存的方法

    mybatis plus使用redis作為二級緩存的方法

    這篇文章主要介紹了mybatis plus使用redis作為二級緩存的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09

最新評論