SpringBoot:全局異常捕獲,自定義異常

SpringBoot 全局異常捕獲

用來捕獲全局異常

@ControllerAdvice
public class GlobalDefultExceptionHandler {

    Logger log = LoggerFactory.getLogger(getClass());

    //聲明要捕獲的異常 自定義 異常
    @ExceptionHandler(value = GlobalMyException.class)
    @ResponseBody
    public R defultExcepitonHandler(HttpServletRequest request, GlobalMyException e) {
        log.error("請求" + request.getRequestURL() + "wangmx異常:", e);
	    return R.errorMassgae(500,e.getMessage());
    }

    //空指針
    @ExceptionHandler(value = NullPointerException.class)
    @ResponseBody
    public R handleNullPointerException(HttpServletRequest request, NullPointerException e) {
        log.error("請求" + request.getRequestURL() + "空指針:", e);
        return R.errorMassgae(501,"空指針");
    }

    //數組越界
    @ExceptionHandler(value = ArrayIndexOutOfBoundsException.class)
    @ResponseBody
    public R handleArrayIndexOutOfBoundsException(HttpServletRequest request, ArrayIndexOutOfBoundsException e) {
        log.error("請求" + request.getRequestURL() + "數組越界:", e);
        return R.errorMassgae(502,"數組越界");
    }

    //算數異常
    @ExceptionHandler(value = ArithmeticException.class)
    @ResponseBody
    public R handleArithmeticException(HttpServletRequest request, ArithmeticException e) {
        log.error("請求" + request.getRequestURL() + "算數異常:", e);
        return R.errorMassgae(503,"算數異常");
    }

    //類型轉換異常
    @ExceptionHandler(value = ClassCastException.class)
    @ResponseBody
    public R handleClassCastException(HttpServletRequest request, ClassCastException e) {
        log.error("請求" + request.getRequestURL() + "類型轉換異常:", e);
        return R.errorMassgae(504,"類型轉換異常");
    }

    //Io
    @ExceptionHandler(value = IOException.class)
    @ResponseBody
    public R handleIOException(HttpServletRequest request, IOException e) {
        log.error("請求" + request.getRequestURL() + "IO異常:", e);
        return R.errorMassgae(601,"IO異常");
    }

    //sql
    @ExceptionHandler(value = SQLException.class)
    @ResponseBody
    public R handleSQLException(HttpServletRequest request, SQLException e) {
        log.error("請求" + request.getRequestURL() + "SQL異常:", e);
        return R.errorMassgae(701,"SQL異常");
    }

}
自定義異常類
/**
 * 指定異常
 */
public class GlobalMyException extends RuntimeException{
    private Logger logger = LoggerFactory.getLogger(getClass());

    //自定義錯誤碼
    private Integer code;
    private String errorMessage;

    //自定義構造器,只保留一個,讓其必須輸入錯誤碼及內容
    public GlobalMyException(String errorMessage) {
        super(errorMessage);
        logger.error(errorMessage);
    }

    //自定義構造器,只保留一個,讓其必須輸入錯誤碼及內容
    public GlobalMyException(int code, String msg) {
        super(msg);
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }

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




}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章