Java基礎(chǔ)之throw和throws的示例詳解
總結(jié)來(lái)說(shuō),throw
是用來(lái)拋出一個(gè)具體的異常實(shí)例,而throws
是用來(lái)聲明方法可能會(huì)拋出哪些類(lèi)型的異常,是對(duì)調(diào)用者的一種通知和要求。
1. throw
- 作用:
throw
關(guān)鍵字用于在方法體內(nèi)實(shí)際拋出一個(gè)異常實(shí)例。當(dāng)程序運(yùn)行到throw
語(yǔ)句時(shí),指定的異常會(huì)被創(chuàng)建并拋出,立即終止當(dāng)前方法的執(zhí)行,并將控制權(quán)轉(zhuǎn)移給包含該方法的調(diào)用者的異常處理機(jī)制。 - 使用時(shí)機(jī): 當(dāng)檢測(cè)到某種錯(cuò)誤條件或異常情況時(shí),在方法內(nèi)部使用
throw
來(lái)拋出一個(gè)異常對(duì)象,這個(gè)對(duì)象可以是系統(tǒng)預(yù)定義的異常類(lèi)的實(shí)例,也可以是自定義異常類(lèi)的實(shí)例。 - 特點(diǎn):
throw
總是伴隨著一個(gè)異常實(shí)例,且其后的代碼不會(huì)被執(zhí)行,因?yàn)橐坏伋霎惓#?dāng)前的代碼路徑就會(huì)被中斷。
2. throws
- 作用:
throws
關(guān)鍵字用于聲明方法可能拋出的異常類(lèi)型,它出現(xiàn)在方法簽名之后。這告知調(diào)用者該方法執(zhí)行時(shí)可能會(huì)遇到的異常情況,要求調(diào)用者要么處理這些異常(使用try-catch
語(yǔ)句塊),要么繼續(xù)向上層方法拋出這些異常。 - 使用時(shí)機(jī): 當(dāng)一個(gè)方法無(wú)法處理或不打算處理某些異常時(shí),可以在方法聲明中使用
throws
來(lái)聲明這些異常。這樣做可以強(qiáng)制調(diào)用者意識(shí)到潛在的異常風(fēng)險(xiǎn)并做出相應(yīng)的處理準(zhǔn)備。 - 特點(diǎn):
throws
后面可以跟隨一個(gè)或多個(gè)異常類(lèi)名,用逗號(hào)分隔,表示該方法可能拋出多種類(lèi)型的異常。并且,throws
聲明并不意味著異常一定會(huì)被拋出,它只是聲明了一種可能性。
3. 為什么有時(shí)候異常必須用throws聲明而有時(shí)候不用?
如圖
(圖一)
(圖二)
為什么會(huì)出現(xiàn)這種情況呢?其實(shí)了解過(guò)Java異常的人都知道,異常分為兩大類(lèi),一類(lèi)是運(yùn)行時(shí)異常,一類(lèi)是非運(yùn)行時(shí)異常。運(yùn)行時(shí)異常只能在運(yùn)行時(shí)識(shí)別,所以編譯器無(wú)法識(shí)別運(yùn)行時(shí)異常,就算不throws出異常也是能編譯通過(guò)的,而非運(yùn)行時(shí)異常如果不throws出來(lái),編譯器就會(huì)識(shí)別到并報(bào)錯(cuò)。
到此這篇關(guān)于Java基礎(chǔ):throw和throws的詳解的文章就介紹到這了,更多相關(guān)Java throw和throws內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Java驗(yàn)證jwt token代碼實(shí)例
這篇文章主要介紹了基于Java驗(yàn)證jwt token代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12Spring依賴(lài)注入DI之三種依賴(lài)注入類(lèi)型詳解
這篇文章主要介紹了Spring依賴(lài)注入DI之三種依賴(lài)注入類(lèi)型詳解,通過(guò) @Autowired 注解,字段注入的實(shí)現(xiàn)方式非常簡(jiǎn)單而直接,代碼的可讀性也很強(qiáng),事實(shí)上,字段注入是三種注入方式中最常用、也是最容易使用的一種,需要的朋友可以參考下2023-09-09java數(shù)據(jù)結(jié)構(gòu)之插入排序
這篇文章主要為大家詳細(xì)介紹了java數(shù)據(jù)結(jié)構(gòu)之插入排序的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11Java8函數(shù)式接口UnaryOperator用法示例
這篇文章主要介紹了Java8函數(shù)式接口UnaryOperator用法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07Spring?Boot?+?Canal?實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)時(shí)監(jiān)控
這篇文章主要介紹了Spring?Boot?+?Canal實(shí)現(xiàn)數(shù)據(jù)庫(kù)實(shí)時(shí)監(jiān)控,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-08-08詳解SpringMVC組件之HandlerMapping(一)
這篇文章主要介紹了詳解SpringMVC組件之HandlerMapping(一),HandlerMapping組件是Spring?MVC核心組件,用來(lái)根據(jù)請(qǐng)求的request查找對(duì)應(yīng)的Handler,在Spring?MVC中,有各式各樣的Web請(qǐng)求,每個(gè)請(qǐng)求都需要一個(gè)對(duì)應(yīng)的Handler來(lái)處理,需要的朋友可以參考下2023-08-08