如何優(yōu)雅的拋出Spring Boot注解的異常詳解
前言
Spring Boot它簡化了配置,內(nèi)嵌式tomcat容器,用于快速開發(fā)基于Spring的應(yīng)用,是一個微框架,本文主要介紹的是關(guān)于如何優(yōu)雅的拋出Spring Boot注解的異常的相關(guān)內(nèi)容,下面話不多說了,來一起看看詳細的介紹吧
平時我們在寫代碼的時候肯定要進行很多參數(shù)驗證,最開始的時候我們一般都是這樣處理的 如下圖
看起來好像也沒什么,但是 如果參數(shù)多了呢?你就會看到這樣的校驗
OMG?。?! 有沒有感覺稍微有點視覺沖擊,雖然這樣寫的已經(jīng)很規(guī)整了,但是還是不夠簡單和優(yōu)雅。
在SpringBoot中,我們可以直接對對象加上@vaild進行參數(shù)校驗
這樣寫是不是看起來優(yōu)雅了很多,沒錯!我們就是要追求這種 小即美 的感覺?。。。?!
雖然這樣看起來優(yōu)雅了很多,但是 還有點問題
當(dāng)我們進行參數(shù)校驗的時候 會看到
OMG的! 這一長串又蹦出來了,在頁面上彈出來很丑,而且提示不夠明確
為什么就不能彈出來message里面的內(nèi)容呢???
顯然 是可以的,不過 這個設(shè)計注解的人想給后臺更多提示,拋出了更詳細的內(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方法
還是有些麻煩的,我的想法是可以自定義一個注解,把這部分代碼整合進去,有興趣的可以去試下。
不過我們終于還是達到了目標不是。
總結(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)于這個問題怎么處理呢,今天小編通過本文給大家詳細說明下,感興趣的朋友一起看看吧2021-05-05SpringBoot中創(chuàng)建的AOP不生效的原因及解決
這篇文章主要介紹了SpringBoot中創(chuàng)建的AOP不生效的原因及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題
這篇文章主要介紹了解決Springboot全局異常處理與AOP日志處理中@AfterThrowing失效問題,文中介紹了兩種失效場景,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧2023-05-05Java中的ArrayList.trimToSize()方法詳解
這篇文章主要介紹了Java中的ArrayList.trimToSize()方法詳解,前幾天看了Java?ArrayList,沒有明白trimToSize()這個方法是什么意思,所以看了一下源碼并且debug一下自己的一個例子,明白了其中的含義,需要的朋友可以參考下2023-11-11Java兩種方法計算出階乘尾部連續(xù)0的個數(shù)
這篇文章主要介紹了Java兩種方法計算出階乘尾部連續(xù)0的個數(shù),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解
這篇文章主要介紹了MybatisPlus 多租戶架構(gòu)(Multi-tenancy)實現(xiàn)詳解,詳細的介紹了什么是多租戶架構(gòu)以及使用MybatisPlus實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11play for scala 實現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面
這篇文章主要介紹了play for scala 實現(xiàn)SessionFilter 過濾未登錄用戶跳轉(zhuǎn)到登錄頁面的相關(guān)資料,需要的朋友可以參考下2016-11-11Java使用HttpUtils實現(xiàn)發(fā)送HTTP請求
這篇文章主要介紹了Java使用HttpUtils實現(xiàn)發(fā)送HTTP請求,HTTP請求,在日常開發(fā)中,還是比較常見的,今天給大家分享HttpUtils如何使用,需要的朋友可以參考下2023-05-05