平時咱們在寫代碼的時候確定要進行不少參數驗證,最開始的時候咱們通常都是這樣處理的 以下圖 框架
看起來好像也沒什麼,可是 若是參數多了呢?你就會看到這樣的校驗設計
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方法
仍是有些麻煩的,個人想法是能夠自定義一個註解,把這部分代碼整合進去,有興趣的能夠去試下。
不過咱們終於仍是達到了目標不是。