掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
哈嘍,大家好,我是指北君。

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先網(wǎng)站策劃后付款的網(wǎng)站建設(shè)流程,更有清鎮(zhèn)免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
今天和大家分享一下異常處理和錯誤碼管理。
在業(yè)務(wù)邏輯中,通常使用兩種方式處理異常:
選擇哪種需要根據(jù)場景而定,不管如何選擇,只要團(tuán)隊(duì)達(dá)成共識,統(tǒng)一規(guī)范就可以。
下面介紹一下我使用的處理異常的方式。
創(chuàng)建一個業(yè)務(wù)異常基類 BaseException extends RuntimeException ,為其添加兩個屬性:code 和 message ,并添加一些常用的構(gòu)造方法。
其中, code 的作用是儲存錯誤碼,在返回前臺時將錯誤碼返回給用戶。
拋出異常:
上面的自定義異??雌饋砗芎唵?,但是不夠優(yōu)雅和簡單。怎么將錯誤碼和錯誤信息管理起來,是我們接下來要解決的問題。
我使用了 Enum ,先創(chuàng)建一個接口,其中包含兩個方法:
下面創(chuàng)建一個枚舉類,實(shí)現(xiàn)上面的接口:
觀察上面的錯誤碼枚舉類,我們發(fā)現(xiàn),枚舉值為字母+錯誤碼,屬性 msg 為錯誤信息。
這樣將錯誤碼和異常信息統(tǒng)一管理起來之后,拋出異常的代碼就可優(yōu)化為:
然而這樣依然不夠優(yōu)雅,代碼量比之前還要長。要是能夠只傳枚舉值一個參數(shù)就好了,那么我們繼續(xù)優(yōu)化。
創(chuàng)建一個異常類 BusinessException extends BaseException (創(chuàng)建一個子類,用來接收枚舉值),如下:
這樣我們就可以優(yōu)雅的拋出 BusinessException 了:
如果想要保留原異常信息,還可以使用:
以上就是對異常處理的封裝,使用時,只需要在每個業(yè)務(wù)模塊中新建一個異常枚舉類,用來統(tǒng)一管理異常;需要時,在代碼中拋出 BusinessException 即可。
最后,我們再使用 @ControllerAdvice 和 @ExceptionHandler 注解做一下統(tǒng)一異常處理,它的作用是:
代碼如下:
當(dāng)前名稱:異常處理實(shí)踐-拋異常+錯誤碼
鏈接URL:http://uogjgqi.cn/article/cogpeid.html

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流