1. 程式人生 > >SpringBoot2.x自定義全域性異常處理器和配置

SpringBoot2.x自定義全域性異常處理器和配置

前言:

在某些業務場景,我們會在系統中針對某些業務丟擲一個統一的自定義異常,然而springBoot為了方便我們能夠對這些異常進行統一處理給我們提供了全域性異常處理器的功能,其實也就是延用了springmvc的全域性異常處理器,只是簡化了配置而已。

好了,廢話不多說,我們直接上程式碼吧

1,自定義異常類.

package com.renrengou.exception;

/**
 * @author 彭偉
 * @Date 2018/9/28 15:54
 * 自定義許可權異常
 */
public class GlobalException extends RuntimeException {
    private Integer code;//異常碼

    public GlobalException(int code, String msg) {
        super(msg);
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }
}

2,定義全域性異常處理器 

package com.renrengou.exception;

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author 彭偉
 * @Date 2018/9/28 15:58
 * 全域性異常處理類
 */
@ControllerAdvice//組合註解,裡面含有Component
public class GlobalDefultExceptionHandler {

    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Object defultExcepitonHandler(HttpServletRequest request, HttpServletResponse response, Exception e) throws IOException {
        e.printStackTrace();
        if (e instanceof GlobalException) {
            //自定義異常
            GlobalException exception = (GlobalException) e;
            response.sendRedirect(request.getContextPath()+"/noPriv.html");
            return exception;
        }
        //系統異常
        return e;
    }
}

 3,使用自定義異常

好了,自定義異常類,到全域性異常處理器就算完成了,根據自己需求對業務進行擴充套件