91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何優雅的實現try catch異常塊

發布時間:2021-11-24 14:49:40 來源:億速云 閱讀:341 作者:柒染 欄目:大數據

如何優雅的實現try catch異常塊,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

在項目中,我們會遇到異常處理,對于運行時異常,需要我們自己判斷處理。對于受檢異常,需要我們主動處理。

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

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

  • 行為參數化:

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

  • Lambda表達式:

  • java8提出:Lambda表達式理解為簡潔的表示可傳遞的匿名函數的一種方式,它沒有名稱,但它有函數體,參數列表,返回類型。可以拋出一個異常類型。包裝代碼邏輯為參數即使用Lambda表達式。

  • 函數式接口:

  • 本質上是只有一個抽象方法的普通接口,可以被隱式的轉換為Lambda表達式,需要用注解定義(@FunctionalInterface)。默認方法和靜態方法可以不屬于抽象方法,可以在函數式接口中定義。

如何優雅的實現try catch異常塊

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

如何優雅的實現try catch異常塊

這句代碼想來小伙伴都不陌生。這是一個受檢異常,需要拋出一個ClassNotFoundException。

正常的寫法:

如何優雅的實現try catch異常塊

如何優雅的實現try catch異常塊

嗯,我們來看具體的實現:很簡單,我們要做的,即把`Class<?> clazz = Class.forName("類名");`當做一種行為去處理,接受一個String ,得到一個Class,所以我們要定義一個函數接口,描述這種行為。

如何優雅的實現try catch異常塊

這里,因為我們的行為需要拋出異常。所以在接口里也拋出異常。關于異常的最佳處理這里不介紹了,詳細看下這篇《Java 編程中關于異常處理的 10 個最佳實踐》。

然后,我們需要定義一個方法,將我們的行為作為參數傳進去,同時,捕獲一下我們的異常。

如何優雅的實現try catch異常塊

然后,我們可以調用我們的方法classFind方法,

如何優雅的實現try catch異常塊

當然。其實這種思想并不簡單的可以做捕獲異常的處理,

我們來看一個Demo->文本文件轉換為字符串:

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

我的思路:

我對java IO用的不是很熟,大家有好的方法請留言,相互學習:

FileInputStream fileInputStream = new FileInputStream(file))

InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream))

BufferedReader bufferedReader = new BufferedReader(inputStreamReader))

String str = bufferedReader.readLine()

字節流-》字符流-》字符緩存流 即 將字節流轉換為字符流之后在用高級流包裝。

所以我的思路是避免在邏輯里出現太多的IO流關閉,和異常捕獲,專心處理讀取邏輯即可,結合以下兩種技術:

  • + try(){}【自動關閉流,1.7支持】

  • + lambda特性來實現【行為參數化,1.8】

如何優雅的實現try catch異常塊

執一個行為,任何BufferReader -> String的Lambda表達式都可以作為參數傳入。只要符合peocess方法的簽名即可。

如何優雅的實現try catch異常塊

執行

如何優雅的實現try catch異常塊

看完上述內容,你們掌握如何優雅的實現try catch異常塊的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武功县| 金塔县| 怀仁县| 新乡县| 河西区| 定兴县| 石阡县| 祁东县| 太仆寺旗| 囊谦县| 玉环县| 蓬莱市| 玛沁县| 公安县| 阿勒泰市| 老河口市| 青河县| 双鸭山市| 廉江市| 延长县| 共和县| 罗源县| 平江县| 广丰县| 宝清县| 武乡县| 台北市| 鄯善县| 洪雅县| 电白县| 星子县| 莫力| 当阳市| 抚顺市| 合作市| 揭阳市| 星座| 萨迦县| 和林格尔县| 秭归县| 镇远县|