如何優(yōu)雅的拋出Spring Boot注解的異常詳解
前言
Spring Boot它簡化了配置,內(nèi)嵌式tomcat容器,用于快速開發(fā)基于Spring的應(yīng)用,是一個微框架,本文主要介紹的是關(guān)于如何優(yōu)雅的拋出Spring Boot注解的異常的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細(xì)的介紹吧
平時我們在寫代碼的時候肯定要進(jìn)行很多參數(shù)驗證,最開始的時候我們一般都是這樣處理的 如下圖

看起來好像也沒什么,但是 如果參數(shù)多了呢?你就會看到這樣的校驗

OMG?。。?有沒有感覺稍微有點視覺沖擊,雖然這樣寫的已經(jīng)很規(guī)整了,但是還是不夠簡單和優(yōu)雅。
在SpringBoot中,我們可以直接對對象加上@vaild進(jìn)行參數(shù)校驗

這樣寫是不是看起來優(yōu)雅了很多,沒錯!我們就是要追求這種 小即美 的感覺?。。。。?/p>
雖然這樣看起來優(yōu)雅了很多,但是 還有點問題

當(dāng)我們進(jìn)行參數(shù)校驗的時候 會看到

OMG的! 這一長串又蹦出來了,在頁面上彈出來很丑,而且提示不夠明確
為什么就不能彈出來message里面的內(nèi)容呢???
顯然 是可以的,不過 這個設(shè)計注解的人想給后臺更多提示,拋出了更詳細(xì)的內(nèi)容,實在是丑了點。
于是為了不寫那么丑的代碼,我改造了一些網(wǎng)上的代碼
@ControllerAdvice
public class ExceptionHandle {
@ExceptionHandler(value = RuntimeException.class)
@ResponseBody
public String handle(RuntimeException e) {
if (e instanceof RuntimeException) {
RuntimeException exception = e;
return exception.getMessage();
} else {
return "未知錯誤";
}
}
public void exceptionMessage(BindingResult bindingResult) throws SeeingException {
if (bindingResult.hasErrors()) {
String msg = bindingResult.getFieldError().getDefaultMessage();
throw new SeeingException(ErrorCode.BUSINESS_EXCEPTION, msg);
}
}
}
通過上面簡單的幾行代碼我們就可以直接拿到

另外兩個參數(shù)是公司框架里面的內(nèi)容,大家可以忽略
這時候只剩下了message里面的內(nèi)容,不過在使用的時候 需要調(diào)用下exceptionMessage方法

還是有些麻煩的,我的想法是可以自定義一個注解,把這部分代碼整合進(jìn)去,有興趣的可以去試下。
不過我們終于還是達(dá)到了目標(biāo)不是。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。
- SpringMvc @Valid如何拋出攔截異常
- springboot springmvc拋出全局異常的解決方法
- 解決spring @ControllerAdvice處理異常無法正確匹配自定義異常
- Spring Boot集成Druid出現(xiàn)異常報錯的原因及解決
- SpringBoot2 JPA解決懶加載異常的問題
- Spring Boot Maven Plugin打包異常解決方案
- Springboot異常錯誤處理解決方案詳解
- spring配置文件解析失敗報”cvc-elt.1: 找不到元素 ''''beans'''' 的聲明”異常解決
- Spring應(yīng)用拋出NoUniqueBeanDefinitionException異常的解決方案
相關(guān)文章
解決Druid動態(tài)數(shù)據(jù)源配置重復(fù)刷錯誤日志的問題
使用druid數(shù)據(jù)庫連接池實現(xiàn)動態(tài)的配置數(shù)據(jù)源功能,在配置過程中出現(xiàn)一個問題既然是用戶自己配置的數(shù)據(jù)源,就無法避免輸入錯誤,連接失敗等情況,關(guān)于這個問題怎么處理呢,今天小編通過本文給大家詳細(xì)說明下,感興趣的朋友一起看看吧2021-05-05
SpringBoot中創(chuàng)建的AOP不生效的原因及解決
這篇文章主要介紹了SpringBoot中創(chuàng)建的AOP不生效的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11
解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題
這篇文章主要介紹了解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題,文中介紹了兩種失效場景,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05
Java中的ArrayList.trimToSize()方法詳解
這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義,需要的朋友可以參考下2023-11-11
Java兩種方法計算出階乘尾部連續(xù)0的個數(shù)
這篇文章主要介紹了Java兩種方法計算出階乘尾部連續(xù)0的個數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解
這篇文章主要介紹了MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解,詳細(xì)的介紹了什么是多租戶架構(gòu)以及使用MybatisPlus實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
play for scala 實現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面
這篇文章主要介紹了play for scala 實現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面的相關(guān)資料,需要的朋友可以參考下2016-11-11
Java使用HttpUtils實現(xiàn)發(fā)送HTTP請求
這篇文章主要介紹了Java使用HttpUtils實現(xiàn)發(fā)送HTTP請求,HTTP請求,在日常開發(fā)中,還是比較常見的,今天給大家分享HttpUtils如何使用,需要的朋友可以參考下2023-05-05

