新聞中心
在項(xiàng)目中,我們會遇到異常處理,對于運(yùn)行時異常,需要我們自己判斷處理。對于受檢異常,需要我們主動處理。

創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比卓尼網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式卓尼網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋卓尼地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。
但是繁瑣的try{}caht嵌套在代碼里,看著很不舒服,這里我們不討論性能,就代碼來講,來看看如何將他隱藏起來。原理是不變的。變得是寫法。下面我們來看如何優(yōu)雅的處理異常塊。
在這之前。你需要知道以下幾個概念:
- 行為參數(shù)化:
是java8提出的,函數(shù)式編程的一種思想,通過把代碼包裝為參數(shù)傳遞行為,即把代碼邏輯包裝為一個參數(shù),傳到方法里。
- Lambda表達(dá)式:
java8提出:Lambda表達(dá)式理解為簡潔的表示可傳遞的匿名函數(shù)的一種方式,它沒有名稱,但它有函數(shù)體,參數(shù)列表,返回類型??梢話伋鲆粋€異常類型。包裝代碼邏輯為參數(shù)即使用Lambda表達(dá)式。
- 函數(shù)式接口:
本質(zhì)上是只有一個抽象方法的普通接口,可以被隱式的轉(zhuǎn)換為Lambda表達(dá)式,需要用注解定義(@FunctionalInterface)。默認(rèn)方法和靜態(tài)方法可以不屬于抽象方法,可以在函數(shù)式接口中定義。
如果函數(shù)式接口中額外定義多個抽象方法,那么這些抽象方法簽名必須和Object的public方法一樣,接口最終有確定的類實(shí)現(xiàn), 而類的最終父類是Object。因此函數(shù)式接口可以定義Object的public方法。
這句代碼想來小伙伴都不陌生。這是一個受檢異常,需要拋出一個ClassNotFoundException。
正常的寫法:
嗯,我們來看具體的實(shí)現(xiàn):很簡單,我們要做的,即把Class> clazz = Class.forName("類名");當(dāng)做一種行為去處理,接受一個String ,得到一個Class,所以我們要定義一個函數(shù)接口,描述這種行為。
這里,因?yàn)槲覀兊男袨樾枰獟伋霎惓!K栽诮涌诶镆矑伋霎惓!?/p>
然后,我們需要定義一個方法,將我們的行為作為參數(shù)傳進(jìn)去,同時,捕獲一下我們的異常。
然后,我們可以調(diào)用我們的方法classFind方法,
當(dāng)然。其實(shí)這種思想并不簡單的可以做捕獲異常的處理,
我們來看一個Demo->文本文件轉(zhuǎn)換為字符串:
在我看來;將文本文件轉(zhuǎn)換為字符串,我們需要使用高級流包裝低級流,然后做緩存讀出來。這里,我們不可避免的會遇到異常處理,流的關(guān)閉等操作,下面我們將這些代碼都異常起來。專心寫讀的邏輯即可。
我的思路:
我對java IO用的不是很熟,大家有好的方法請留言,相互學(xué)習(xí):
- FileInputStream fileInputStream = new FileInputStream(file))
- InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream))
- BufferedReader bufferedReader = new BufferedReader(inputStreamReader))
- String str = bufferedReader.readLine()
字節(jié)流-》字符流-》字符緩存流 即 將字節(jié)流轉(zhuǎn)換為字符流之后在用高級流包裝。
所以我的思路是避免在邏輯里出現(xiàn)太多的IO流關(guān)閉,和異常捕獲,專心處理讀取邏輯即可,結(jié)合以下兩種技術(shù):
- try(){}【自動關(guān)閉流,1.7支持】
- lambda特性來實(shí)現(xiàn)【行為參數(shù)化,1.8】
執(zhí)一個行為,任何BufferReader -> String的Lambda表達(dá)式都可以作為參數(shù)傳入。只要符合peocess方法的簽名即可。
執(zhí)行
本文名稱:如何優(yōu)雅的實(shí)現(xiàn)try/catch異常塊?
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/dhcpgii.html


咨詢
建站咨詢
