成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

如何優(yōu)雅的實(shí)現(xiàn)trycatch異常塊

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊,相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。

專(zhuān)注于為中小企業(yè)提供成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)汝南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

在項(xiàng)目中,我們會(huì)遇到異常處理,對(duì)于運(yùn)行時(shí)異常,需要我們自己判斷處理。對(duì)于受檢異常,需要我們主動(dòng)處理。

但是繁瑣的try{}catch嵌套在代碼里,看著很不舒服,這里我們不討論性能,就代碼來(lái)講,來(lái)看看如何將他隱藏起來(lái)。原理是不變的。變得是寫(xiě)法。下面我們來(lái)看如何優(yōu)雅的處理異常塊。

在這之前。你需要知道以下幾個(gè)概念:

  • 行為參數(shù)化:

  • 是java8提出的,函數(shù)式編程的一種思想,通過(guò)把代碼包裝為參數(shù)傳遞行為,即把代碼邏輯包裝為一個(gè)參數(shù),傳到方法里,Java8系列新特性教程可以關(guān)注公眾號(hào)Java技術(shù)棧搜索閱讀。

  • Lambda表達(dá)式:

  • java8提出:Lambda表達(dá)式理解為簡(jiǎn)潔的表示可傳遞的匿名函數(shù)的一種方式,它沒(méi)有名稱(chēng),但它有函數(shù)體,參數(shù)列表,返回類(lèi)型??梢?huà)伋鲆粋€(gè)異常類(lèi)型。包裝代碼邏輯為參數(shù)即使用Lambda表達(dá)式。

  • 函數(shù)式接口:

  • 本質(zhì)上是只有一個(gè)抽象方法的普通接口,可以被隱式的轉(zhuǎn)換為L(zhǎng)ambda表達(dá)式,需要用注解定義(@FunctionalInterface)。默認(rèn)方法和靜態(tài)方法可以不屬于抽象方法,可以在函數(shù)式接口中定義。

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

如果函數(shù)式接口中額外定義多個(gè)抽象方法,那么這些抽象方法簽名必須和Object的public方法一樣,接口最終有確定的類(lèi)實(shí)現(xiàn), 而類(lèi)的最終父類(lèi)是Object。因此函數(shù)式接口可以定義Object的public方法。

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

這句代碼想來(lái)小伙伴都不陌生。這是一個(gè)受檢異常,需要拋出一個(gè)ClassNotFoundException。

正常的寫(xiě)法:

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

嗯,我們來(lái)看具體的實(shí)現(xiàn):很簡(jiǎn)單,我們要做的,即把`Class<?> clazz = Class.forName("類(lèi)名");`當(dāng)做一種行為去處理,接受一個(gè)String ,得到一個(gè)Class,所以我們要定義一個(gè)函數(shù)接口,描述這種行為。

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

這里,因?yàn)槲覀兊男袨樾枰獟伋霎惓?。所以在接口里也拋出異常。關(guān)于異常的最佳處理這里不介紹了,詳細(xì)看下這篇《Java 編程中關(guān)于異常處理的 10 個(gè)最佳實(shí)踐》。

然后,我們需要定義一個(gè)方法,將我們的行為作為參數(shù)傳進(jìn)去,同時(shí),捕獲一下我們的異常。

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

然后,我們可以調(diào)用我們的方法classFind方法,

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

當(dāng)然。其實(shí)這種思想并不簡(jiǎn)單的可以做捕獲異常的處理,

我們來(lái)看一個(gè)Demo->文本文件轉(zhuǎn)換為字符串:

**在我看來(lái);**將文本文件轉(zhuǎn)換為字符串,我們需要使用高級(jí)流包裝低級(jí)流,然后做緩存讀出來(lái)。這里,我們不可避免的會(huì)遇到異常處理,流的關(guān)閉等操作,下面我們將這些代碼都異常起來(lái)。專(zhuān)心寫(xiě)讀的邏輯即可。

我的思路:

我對(duì)java IO用的不是很熟,大家有好的方法請(qǐng)留言,相互學(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)換為字符流之后在用高級(jí)流包裝。

所以我的思路是避免在邏輯里出現(xiàn)太多的IO流關(guān)閉,和異常捕獲,專(zhuān)心處理讀取邏輯即可,結(jié)合以下兩種技術(shù):

  • + try(){}【自動(dòng)關(guān)閉流,1.7支持】

  • + lambda特性來(lái)實(shí)現(xiàn)【行為參數(shù)化,1.8】

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

執(zhí)一個(gè)行為,任何BufferReader -> String的Lambda表達(dá)式都可以作為參數(shù)傳入。只要符合peocess方法的簽名即可。

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

執(zhí)行

如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊

看完上述內(nèi)容,你們掌握如何優(yōu)雅的實(shí)現(xiàn)try catch異常塊的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

文章名稱(chēng):如何優(yōu)雅的實(shí)現(xiàn)trycatch異常塊
文章網(wǎng)址:http://jinyejixie.com/article32/ghdssc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
乌兰浩特市| 平江县| 开化县| 湘阴县| 和林格尔县| 海口市| 中超| 澳门| 山阴县| 景德镇市| 米易县| 宕昌县| 武乡县| 双江| 富平县| 陆川县| 绍兴县| 陕西省| 韶关市| 临城县| 宜州市| 阜城县| 墨竹工卡县| 连州市| 镇宁| 安义县| 甘谷县| 霞浦县| 桓仁| 牡丹江市| 剑阁县| 怀安县| 淳安县| 沅江市| 崇左市| 富川| 康保县| 杭锦后旗| 大余县| 怀远县| 通榆县|