最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
和平县| 勃利县| 滨州市| 颍上县| 四川省| 尼玛县| 乐亭县| 富源县| 新竹县| 临武县| 合江县| 岑巩县| 德钦县| 天峻县| 和政县| 板桥市| 平舆县| 枣庄市| 建湖县| 大石桥市| 东阳市| 濮阳县| 泰和县| 福清市| 磴口县| 沙雅县| 察雅县| 德保县| 鄄城县| 祥云县| 岳阳市| 安康市| 岳阳县| 南木林县| 县级市| 布尔津县| 八宿县| 肃北| 临湘市| 河池市| 元氏县|