五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

DELOG 10.10 理解異常 & 為什么要設(shè)計(jì)CE和RE?& Kotlin中是怎么處理的?

2021-10-10 16:25 作者:房頂上的鋁皮水塔  | 我要投稿

異常的分類(lèi):


Java中的異??梢詮膬蓚€(gè)方面進(jìn)行分類(lèi):

1. 繼承關(guān)系上:通常將RuntimeException的子類(lèi)和Error類(lèi)的子類(lèi)稱(chēng)作unchecked exception。其他的稱(chēng)作checked exception。

2. 運(yùn)行結(jié)果上:Java的異常分為checked exception和 unchecked exception。checked exception (CE)是程序預(yù)期的一部分,而unchecked exception(runtime exception,RE)卻不是。


設(shè)計(jì)CE和RE的目的

CE:表示當(dāng)前的函數(shù)/方法返回的結(jié)果可能存在兩種,一種是正常返回的結(jié)果,一種是異常。之所以需要這樣設(shè)計(jì),是一種自然而然的合約。程序的設(shè)計(jì)者在方法簽名中拋出異常(可能會(huì)發(fā)生的異常),使用這就應(yīng)該做出處理。

借助知乎的這篇回答的解釋?zhuān)篔ava設(shè)計(jì)出checked exception有必要嗎? - BachScript的回答 - 知乎 https://www.zhihu.com/question/30428214/answer/852807268


RE:反映的是一種意料之外的狀況。但是RE也是必須的,如果不使用RE,在調(diào)用鏈上,調(diào)用鏈的上游拋出了異常,下游就需要知道如何處理,并且上下游的模塊也會(huì)因?yàn)檫@個(gè)異常被耦合到一起。


Kotlin中是如何處理的呢?

Kotlin中都是unchecked 異常,因?yàn)榭偸菣z查異常會(huì)降低生產(chǎn)力,但是卻沒(méi)有明顯提高代碼質(zhì)量。

而且Kotlin通過(guò)類(lèi)型機(jī)制實(shí)現(xiàn)了更好的【類(lèi)型匹配】:

如果按照上面的文章中的union type來(lái)理解,這里的a的類(lèi)型應(yīng)該是Int|NumberFormatException,但是Kotlin中支持try表達(dá)式,所以當(dāng)真正發(fā)生異常的時(shí)候可以將a的值設(shè)為空值。


總結(jié):

  1. CE和RE都是Java異常機(jī)制的一部分。CE更像是一種代碼規(guī)范,表示返回的結(jié)果類(lèi)型要么事異常要么就是指定的返回類(lèi)型。

  2. RE在運(yùn)行過(guò)程中發(fā)證的異常,也是必須的為了避免耦合性。

  3. 反正RE不能避免,而且CE沒(méi)有顯著提升代碼質(zhì)量,所以Kotlin也沒(méi)有支持CE。但是在真正遇到可能出現(xiàn)的異常的時(shí)候,還是可以進(jìn)行try-catch。


參考內(nèi)容:

淺談Kotlin的Checked Exception機(jī)制:

https://segmentfault.com/a/1190000025161951

官方文檔:

https://www.kotlincn.net/docs/reference/exceptions.html

DELOG 10.10 理解異常 & 為什么要設(shè)計(jì)CE和RE?& Kotlin中是怎么處理的?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
富锦市| 沈丘县| 盐亭县| 房山区| 淅川县| 鹤岗市| 巴彦县| 潞西市| 彩票| 萨迦县| 新乐市| 轮台县| 东兰县| 呈贡县| 昌黎县| 资源县| 乌兰察布市| 天门市| 通许县| 内乡县| 佛山市| 衡阳县| 仁怀市| 汕尾市| 仪陇县| 青州市| 怀来县| 宁都县| 柳林县| 建德市| 新疆| 东城区| 安福县| 海安县| 裕民县| 孝昌县| 桃园县| 咸阳市| 云安县| 金秀| 申扎县|