日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > java >内容正文

java

Effective Java之抛出与抽象相应的异常(六十一)

發(fā)布時(shí)間:2024/2/28 java 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Effective Java之抛出与抽象相应的异常(六十一) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.如何處理異常?
方法B拋出了一個(gè)受檢的異常 ,那么方法A在內(nèi)部調(diào)用方法B時(shí),面對(duì)方法B拋出的受檢異常,可以選擇繼續(xù)拋出向上傳播這個(gè)異常,也可以捕獲這個(gè)異常進(jìn)行處理。究竟是向上傳播拋出,還是捕獲處理呢?

2.處理異常方法

方法一:拋出與抽象想對(duì)應(yīng)的異常
例如
如果方法B拋出了NoSuchElementException這個(gè)受檢異常,然而在方法A中調(diào)用方法B時(shí),根據(jù)方法A中的邏輯,當(dāng)遇到NoSuchElementException異常時(shí),拋出一個(gè)IndexsOutOfBoundsException異常更為合適。那么就不應(yīng)該選擇向上傳播拋出NoSuchElementException,而是應(yīng)該選擇捕獲NoSuchElementException,然后拋出IndexsOutOfBoundsException。

更高層的實(shí)現(xiàn)應(yīng)該捕獲底層的異常,同時(shí)拋出可以按照高層抽象進(jìn)行解釋的異常。這種做法稱(chēng)為異常轉(zhuǎn)譯(exception translation)。

方法二:避免底層異常出現(xiàn)
處理來(lái)自底層異常的最好做法是,在調(diào)用底層方法之前確保它們會(huì)成功執(zhí)行。
還是拿上面的當(dāng)成例子,如果高層的A方法能夠通過(guò)普通的判斷語(yǔ)句保證底層的B方法永遠(yuǎn)也不會(huì)拋出異常,那么就可以不必處理B方法的異常。

方法三:繞開(kāi)底層異常
如果無(wú)法避免低層異常,可以讓更高層來(lái)悄悄地繞開(kāi)這些異常,從而將高層方法的調(diào)用者與低層的問(wèn)題隔離開(kāi)來(lái)。使用適當(dāng)?shù)赜涗洐C(jī)制來(lái)將異常記錄下來(lái)。
對(duì)于上面的例子,如果A方法實(shí)在不能避開(kāi)B方法,那么該怎么辦呢,只需要try-catch底層的異常,然后偷偷地通過(guò)記錄機(jī)制把異常記錄下來(lái),這樣A就不用做其他異常處理了。

總結(jié)

以上是生活随笔為你收集整理的Effective Java之抛出与抽象相应的异常(六十一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。