1. 程式人生 > >springboot2 統一異常處理

springboot2 統一異常處理

統一異常處理,不需要在每一層上單獨捕獲異常,只需要關注業務的開發:

程式碼如下:

@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    public AjaxResponse handler(Exception e){
        AjaxResponse r = new AjaxResponse();
        if (e instanceof RuntimeException){
            RuntimeException selectNoFindException 
= (RuntimeException) e; r.setStatus(-1); r.setMsg(selectNoFindException.getMessage()); } else { r.setStatus(-1); r.setMsg("系統錯誤"); } log.error(e.getMessage()); return r; } }

其中AjaxResponse的原始碼定義如下:

package
com.crhms.medicareopinion.model; import lombok.Data; @Data public class AjaxResponse<T> { private Integer status; private String msg; private T data; }

解釋一下:

1. 異常要分類,主要是因為異常的錯誤訊息要傳遞給前端顯示,如果我們直接把所有的異常訊息給前端,就會有諸如錯誤碼,空指標類似的訊息,顯示是不對的。

   通常來說,自定義的異常是把錯誤給前端直接顯示, 其它異常我們可以固定一個錯誤訊息給前端即可,

2. 把正常的rest返回結果和異常的返回結果 用一個類來封裝一下,方便修改,而不是硬編碼。請參考下一篇springboot統一返回結果