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

 

平時咱們在寫代碼的時候確定要進行不少參數驗證,最開始的時候咱們通常都是這樣處理的  以下圖  框架

看起來好像也沒什麼,可是  若是參數多了呢?你就會看到這樣的校驗設計

OMG!!!  有沒有感受稍微有點視覺衝擊,雖然這樣寫的已經很規整了,可是仍是不夠簡單和優雅。3d

在SpringBoot中,咱們能夠直接對對象加上@vaild進行參數校驗 對象

這樣寫是否是看起來優雅了不少,沒錯!咱們就是要追求這種 小即美 的感受!!!!!blog

 

雖然這樣看起來優雅了不少,可是  還有點問題get

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

 

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

爲何就不能彈出來message裏面的內容呢???後臺

 

顯然   是能夠的,不過  這個設計註解的人想給後臺更多提示,拋出了更詳細的內容,實在是醜了點。exception

因而爲了避免寫那麼醜的代碼,我改造了一些網上的代碼

 

@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方法

仍是有些麻煩的,個人想法是能夠自定義一個註解,把這部分代碼整合進去,有興趣的能夠去試下。

不過咱們終於仍是達到了目標不是。

相關文章
相關標籤/搜索