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

看起來(lái)好像也沒(méi)什么,但是 如果參數(shù)多了呢?你就會(huì)看到這樣的校驗(yàn)

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

這樣寫是不是看起來(lái)優(yōu)雅了很多,沒(méi)錯(cuò)!我們就是要追求這種 小即美 的感覺(jué)?。。。。?/p>
雖然這樣看起來(lái)優(yōu)雅了很多,但是 還有點(diǎn)問(wèn)題

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

OMG的! 這一長(zhǎng)串又蹦出來(lái)了,在頁(yè)面上彈出來(lái)很丑,而且提示不夠明確
為什么就不能彈出來(lái)message里面的內(nèi)容呢???
顯然 是可以的,不過(guò) 這個(gè)設(shè)計(jì)注解的人想給后臺(tái)更多提示,拋出了更詳細(xì)的內(nèi)容,實(shí)在是丑了點(diǎn)。
于是為了不寫那么丑的代碼,我改造了一些網(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 "未知錯(cuò)誤";
}
}
public void exceptionMessage(BindingResult bindingResult) throws SeeingException {
if (bindingResult.hasErrors()) {
String msg = bindingResult.getFieldError().getDefaultMessage();
throw new SeeingException(ErrorCode.BUSINESS_EXCEPTION, msg);
}
}
}
通過(guò)上面簡(jiǎn)單的幾行代碼我們就可以直接拿到

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

還是有些麻煩的,我的想法是可以自定義一個(gè)注解,把這部分代碼整合進(jìn)去,有興趣的可以去試下。
不過(guò)我們終于還是達(dá)到了目標(biāo)不是。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- SpringMvc @Valid如何拋出攔截異常
- springboot springmvc拋出全局異常的解決方法
- 解決spring @ControllerAdvice處理異常無(wú)法正確匹配自定義異常
- Spring Boot集成Druid出現(xiàn)異常報(bào)錯(cuò)的原因及解決
- SpringBoot2 JPA解決懶加載異常的問(wèn)題
- Spring Boot Maven Plugin打包異常解決方案
- Springboot異常錯(cuò)誤處理解決方案詳解
- spring配置文件解析失敗報(bào)”cvc-elt.1: 找不到元素 ''''beans'''' 的聲明”異常解決
- Spring應(yīng)用拋出NoUniqueBeanDefinitionException異常的解決方案
相關(guān)文章
Java8新特性O(shè)ptional類及新時(shí)間日期API示例詳解
這篇文章主要為大家介紹了Java8新特性O(shè)ptional類及新時(shí)間日期API示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11
python和java哪個(gè)學(xué)起來(lái)更簡(jiǎn)單
在本篇內(nèi)容里小編給大家分享的是一篇關(guān)于python和java哪個(gè)學(xué)起來(lái)更簡(jiǎn)單的相關(guān)內(nèi)容,有興趣的朋友們參考下。2020-06-06
淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別
本文主要介紹了淺談Java內(nèi)部類與靜態(tài)內(nèi)部類的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
基于Spring Mvc實(shí)現(xiàn)的Excel文件上傳下載示例
本篇文章主要介紹了基于Spring Mvc實(shí)現(xiàn)的Excel文件上傳下載示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02
一文帶你掌握J(rèn)ava開(kāi)發(fā)者如何接入并使用DeepSeek
對(duì)于Java開(kāi)發(fā)者來(lái)說(shuō),將DeepSeek集成到項(xiàng)目中,可以極大地提升數(shù)據(jù)處理和分析的效率,下面小編就來(lái)為大家介紹一下具體的調(diào)用方法吧2025-03-03

