論如何優雅的拋出SpringBoot注解的異常


 

平時我們在寫代碼的時候肯定要進行很多參數驗證,最開始的時候我們一般都是這樣處理的  如下圖  

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

OMG!!!  有沒有感覺稍微有點視覺沖擊,雖然這樣寫的已經很規整了,但是還是不夠簡單和優雅。

在SpringBoot中,我們可以直接對對象加上@vaild進行參數校驗 

這樣寫是不是看起來優雅了很多,沒錯!我們就是要追求這種 小即美 的感覺!!!!!

 

雖然這樣看起來優雅了很多,但是  還有點問題

當我們進行參數校驗的時候   會看到

 

 OMG的! 這一長串又蹦出來了,在頁面上彈出來很丑,而且提示不夠明確 

為什么就不能彈出來message里面的內容呢???

 

顯然   是可以的,不過  這個設計注解的人想給后台更多提示,拋出了更詳細的內容,實在是丑了點。

於是為了不寫那么丑的代碼,我改造了一些網上的代碼

 

@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);
}
}
}
通過上面簡單的幾行代碼我們就可以直接拿到

 

另外兩個參數是公司框架里面的內容,大家可以忽略

這時候只剩下了message里面的內容,不過在使用的時候  需要調用下exceptionMessage方法

還是有些麻煩的,我的想法是可以自定義一個注解,把這部分代碼整合進去,有興趣的可以去試下。

不過我們終於還是達到了目標不是。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM