成人免费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

2021-01-13 09:55:29

try-catch-fJava代碼

2023-10-10 13:23:18

空指針異常Java

2024-06-25 10:37:11

2024-05-24 08:59:15

2009-12-03 10:49:32

PHP自定義異常處理器

2025-06-25 08:15:00

JavaScrip異步編程代碼

2009-12-02 19:56:33

PHP中try{}ca

2019-01-24 16:11:19

前端全局異常數據校驗

2021-09-26 09:40:25

React代碼前端

2023-09-07 07:53:21

JavaScriptGoRust

2024-02-27 10:48:16

C++代碼開發

2022-02-18 17:34:47

數組多維五維數組

2021-03-31 11:52:24

try-catch-fJava代碼
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 婷婷色在线 | 在线视频h | 国产精品一区2区 | 国产日韩精品一区 | 亚洲成人天堂 | 日韩av.com | 日韩欧美三级电影 | 亚洲第1页 | 久久久久国色av免费观看性色 | 中文字幕日韩在线 | 国产一区在线免费 | 日本不卡一区二区三区在线观看 | 国产成人精品免高潮在线观看 | 日韩精品一区二区三区中文字幕 | 成人精品一区二区三区中文字幕 | a级毛片免费高清视频 | 中文字幕一区二区三区四区 | 国产精品视频一区二区三区 | 亚洲男人天堂 | 又黑又粗又长的欧美一区 | www.久| 激情久久av一区av二区av三区 | 亚洲精品一区二区三区蜜桃久 | 欧美一级www片免费观看 | 日韩中文一区二区三区 | 久久久成人免费视频 | 精品乱人伦一区二区三区 | 男人电影天堂 | 亚洲成人福利视频 | 日韩欧美精品在线 | a级在线免费观看 | 99久久精品国产一区二区三区 | 91在线网站 | 亚洲一区二区三区高清 | 无码国模国产在线观看 | 日韩高清国产一区在线 | 欧美精品久久久 | 精品一区二区三区在线视频 | 日日夜夜精品视频 | 国产日韩欧美 | 99久久夜色精品国产亚洲96 |