自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

異常處理實(shí)踐 - 拋異常+錯(cuò)誤碼

開發(fā) 前端
創(chuàng)建一個(gè)業(yè)務(wù)異?;?BaseException extends RuntimeException ,為其添加兩個(gè)屬性:code 和 message ,并添加一些常用的構(gòu)造方法。

哈嘍,大家好,我是指北君。

今天和大家分享一下異常處理和錯(cuò)誤碼管理。

前言

在業(yè)務(wù)邏輯中,通常使用兩種方式處理異常:

  • 返回錯(cuò)誤碼:優(yōu)點(diǎn)是性能更好,但是不宜維護(hù)。
  • 拋出異常:可以使得代碼更清晰,可讀性更好,更符合面向?qū)ο蟆?/li>

選擇哪種需要根據(jù)場(chǎng)景而定,不管如何選擇,只要團(tuán)隊(duì)達(dá)成共識(shí),統(tǒng)一規(guī)范就可以。

下面介紹一下我使用的處理異常的方式。

自定義異常

創(chuàng)建一個(gè)業(yè)務(wù)異?;?BaseException extends RuntimeException ,為其添加兩個(gè)屬性:code 和 message ,并添加一些常用的構(gòu)造方法。

其中, code 的作用是儲(chǔ)存錯(cuò)誤碼,在返回前臺(tái)時(shí)將錯(cuò)誤碼返回給用戶。

圖片

拋出異常:

圖片

錯(cuò)誤碼管理

上面的自定義異??雌饋砗芎?jiǎn)單,但是不夠優(yōu)雅和簡(jiǎn)單。怎么將錯(cuò)誤碼和錯(cuò)誤信息管理起來,是我們接下來要解決的問題。

我使用了 Enum ,先創(chuàng)建一個(gè)接口,其中包含兩個(gè)方法:

  • toCode():將枚舉值轉(zhuǎn)為 int 錯(cuò)誤碼,默認(rèn)已實(shí)現(xiàn);
  • getMsg():獲取枚舉中的異常信息。

圖片

下面創(chuàng)建一個(gè)枚舉類,實(shí)現(xiàn)上面的接口:

圖片

觀察上面的錯(cuò)誤碼枚舉類,我們發(fā)現(xiàn),枚舉值為字母+錯(cuò)誤碼,屬性 msg 為錯(cuò)誤信息。

這樣將錯(cuò)誤碼和異常信息統(tǒng)一管理起來之后,拋出異常的代碼就可優(yōu)化為:

圖片

然而這樣依然不夠優(yōu)雅,代碼量比之前還要長。要是能夠只傳枚舉值一個(gè)參數(shù)就好了,那么我們繼續(xù)優(yōu)化。

創(chuàng)建一個(gè)異常類 BusinessException extends BaseException (創(chuàng)建一個(gè)子類,用來接收枚舉值),如下:

圖片

這樣我們就可以優(yōu)雅的拋出 BusinessException 了:

圖片

如果想要保留原異常信息,還可以使用:

圖片

以上就是對(duì)異常處理的封裝,使用時(shí),只需要在每個(gè)業(yè)務(wù)模塊中新建一個(gè)異常枚舉類,用來統(tǒng)一管理異常;需要時(shí),在代碼中拋出 BusinessException 即可。

統(tǒng)一異常處理

最后,我們?cè)偈褂?@ControllerAdvice 和 @ExceptionHandler 注解做一下統(tǒng)一異常處理,它的作用是:

  • 將業(yè)務(wù)異常打印到日志中
  • 將系統(tǒng)異常封裝為 BaseException 進(jìn)行返回,同樣打印日志;
  • 這里也可以做其他操作,比如短信提醒等。

代碼如下:

圖片

圖片

責(zé)任編輯:武曉燕 來源: Java技術(shù)指北
相關(guān)推薦

2025-01-02 10:37:13

2025-02-10 09:49:00

2017-09-05 14:59:34

2024-08-29 08:54:35

2023-02-02 08:56:25

線程池線程submit

2019-11-05 17:10:19

Java開發(fā)編程語言

2012-07-26 10:27:31

PHP

2020-06-30 11:36:45

錯(cuò)誤碼合理開發(fā)

2021-06-07 09:37:05

異常Bug排查

2025-02-05 14:28:19

2017-06-02 10:25:26

Java異常處理

2018-02-06 09:05:25

Java異常處理代碼

2013-08-22 17:10:09

.Net異常處理

2012-12-21 10:48:20

Java異常

2012-11-12 10:32:48

IBMdw

2018-07-11 19:41:47

MySQL定義異常異常處理

2017-11-20 11:53:38

CDN406錯(cuò)誤故障

2023-12-11 14:19:00

Java程序異常

2024-04-16 12:18:05

編程異常處理錯(cuò)誤返回

2013-04-01 09:39:06

JavaJava異常
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)