成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

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

  •  行為參數化:

是java8提出的,函數式編程的一種思想,通過把代碼包裝為參數傳遞行為,即把代碼邏輯包裝為一個參數,傳到方法里。

  •  Lambda表達式:

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

  •  函數式接口:

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

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

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

正常的寫法:

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

這里,因為我們的行為需要拋出異常。所以在接口里也拋出異常。

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

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

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

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

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

我的思路:

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

  1. FileInputStream fileInputStream = new FileInputStream(file))  
  2. InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream))  
  3. BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) 
  4. String str = bufferedReader.readLine() 

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

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

  •  try(){}【自動關閉流,1.7支持】
  •  lambda特性來實現【行為參數化,1.8】

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

執行

 

 

責任編輯:龐桂玉 來源: Java知音
相關推薦

2023-11-13 17:01:26

C++編程

2020-09-27 07:48:40

不用try catch

2024-11-04 08:20:00

try-catch編程

2024-05-10 11:43:23

C#編程

2024-05-07 07:58:47

C#程序類型

2023-10-27 08:20:12

springboot微服務

2009-07-21 14:30:38

Scalatry-catch

2023-10-10 13:23:18

空指針異常Java

2021-01-13 09:55:29

try-catch-fJava代碼

2024-06-25 10:37:11

2009-12-03 10:49:32

PHP自定義異常處理器

2024-05-24 08:59:15

2019-01-24 16:11:19

前端全局異常數據校驗

2009-12-02 19:56:33

PHP中try{}ca

2025-06-25 08:15:00

JavaScrip異步編程代碼

2021-09-26 09:40:25

React代碼前端

2024-02-27 10:48:16

C++代碼開發

2020-08-26 07:17:19

通信

2022-02-18 17:34:47

數組多維五維數組

2023-09-07 07:53:21

JavaScriptGoRust
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲男人的天堂网站 | 91精品国产日韩91久久久久久 | 综合色在线 | 亚洲色图婷婷 | 视频在线一区二区 | 色伊人 | 国产精品久久久久久久7电影 | 久久久精品综合 | 亚洲国产中文字幕 | 婷婷午夜天 | 一区二区三区视频在线 | 欧美激情一区二区三区 | 天堂男人av | 色综合九九| 亚洲另类春色偷拍在线观看 | 日韩中文字幕在线观看 | 欧美无乱码久久久免费午夜一区 | 欧美激情视频一区二区三区在线播放 | 午夜天堂精品久久久久 | 一区二区视频在线 | 国产精品久久久99 | 久久电影一区 | 99久久精品国产麻豆演员表 | 日韩成人免费av | 久久久成人免费一区二区 | 91精品国产91久久久久久 | 请别相信他免费喜剧电影在线观看 | 欧美1区| 久久久久黄色 | 欧美日韩国产精品一区 | 国产精品污www在线观看 | 中文字幕日韩欧美 | 久久久久久美女 | 亚洲3p| 欧美一级观看 | 成人性生交大免费 | 久久久久久综合 | 一区二区三区中文字幕 | 99久久婷婷国产综合精品电影 | 精品日韩 | 欧美精品在线播放 |