欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot全局統(tǒng)一異常處理器

 更新時(shí)間:2021年05月13日 16:34:08   作者:森-Js  
軟件開(kāi)發(fā)springboot項(xiàng)目過(guò)程中,不僅有大量的冗余代碼,而且還影響代碼的可讀性.這樣就需要定義個(gè)全局統(tǒng)一異常處理器,以便業(yè)務(wù)層再也不必處理異常.文中有非常詳細(xì)的代碼示例,需要的朋友可以參考下

一、封裝統(tǒng)一返回結(jié)果類

import com.jiusen.exercise.enums.ErrorEnum;
import com.jiusen.exercise.exception.BusinessException;
import lombok.Getter;
import lombok.Setter;
 
/**
 * @author: Lawson
 * @date: 2021/5/11
 * @description: TODO 統(tǒng)一的返回結(jié)果
 */
@Getter
@Setter
public class AjaxResult {
 
    //是否成功
    private Boolean success;
    //狀態(tài)碼
    private Integer code;
    //提示信息
    private String msg;
    //數(shù)據(jù)
    private Object data;
 
    public AjaxResult() {
    }
 
    //自定義返回結(jié)果的構(gòu)造方法
    public AjaxResult(Boolean success, Integer code, String msg, Object data) {
        this.success = success;
        this.code = code;
        this.msg = msg;
        this.data = data;
    }
 
    //自定義異常返回的結(jié)果
    public static AjaxResult defineError(BusinessException de) {
        AjaxResult result = new AjaxResult();
        result.setSuccess(false);
        result.setCode(de.getErrorCode());
        result.setMsg(de.getErrorMsg());
        result.setData(null);
        return result;
    }
 
    //其他異常處理方法返回的結(jié)果
    public static AjaxResult otherError(ErrorEnum errorEnum){
        AjaxResult result = new AjaxResult();
        result.setMsg(errorEnum.getErrorMsg());
        result.setCode(errorEnum.getErrorCode());
        result.setSuccess(false);
        result.setData(null);
        return result;
    }
}

二、自定義異常封裝類

import lombok.Getter;
import lombok.Setter;
 
/**
 * @author: Lawson
 * @date: 2021/5/11
 * @description: TODO 類描述
 */
@Getter
@Setter
public class BusinessException extends RuntimeException{
 
    private static final long serialVersionUID = 1L;
 
    /**
     * 錯(cuò)誤狀態(tài)碼
     */
    protected Integer errorCode;
    /**
     * 錯(cuò)誤提示
     */
    protected String errorMsg;
 
    public BusinessException() {
    }
 
    public BusinessException(String message, Integer errorCode, String errorMsg) {
        super(message);
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }
}

三、錯(cuò)誤枚舉

**
 * @author: Lawson
 * @date: 2021/5/11
 * @description: TODO 類描述
 */
public enum  ErrorEnum {
    //數(shù)據(jù)操作錯(cuò)誤定義
    SUCCESS(200, "成功"),
    NO_PERMISSION(403, "你無(wú)權(quán)訪問(wèn)"),
    NO_Auth(401, "未授權(quán),請(qǐng)登錄驗(yàn)證"),
    NO_FOUND(404, "未找到資源"),
    INTERNAL_SERVER_ERROR(500, "服務(wù)器異常, 請(qǐng)聯(lián)系管理員!");
 
 
    /**
     * 錯(cuò)誤碼
     */
    private Integer errorCode;
    /**
     * 錯(cuò)誤信息
     */
    private String errorMsg;
 
    ErrorEnum(Integer errorCode, String errorMsg) {
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }
 
    public Integer getErrorCode() {
        return errorCode;
    }
 
    public String getErrorMsg() {
        return errorMsg;
    }
}

四、全局異常處理類

import com.jiusen.exercise.enums.ErrorEnum;
import com.jiusen.exercise.exception.BusinessException;
import com.jiusen.exercise.rest.AjaxResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 
/**
 * @author: Lawson
 * @date: 2021/5/11
 * @description: TODO 類描述
 */
@RestControllerAdvice
public class GlobalExceptionHandler {
 
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
 
    /**
     * 處理自定義異常
     * @param e
     * @return
     */
    @ExceptionHandler(value = BusinessException.class)
    public AjaxResult bizExceptionHandler(BusinessException e) {
        log.error(e.getErrorMsg(), e);
        return AjaxResult.defineError(e);
    }
 
    /**
     * 處理其它異常
     */
    @ExceptionHandler(value = Exception.class)
    public AjaxResult exceptionHandler(Exception e) {
        log.error(e.getMessage(), e);
        return AjaxResult.otherError(ErrorEnum.INTERNAL_SERVER_ERROR);
    }
}

五、測(cè)試

import com.jiusen.exercise.enums.ErrorEnum;
import com.jiusen.exercise.exception.BusinessException;
import com.jiusen.exercise.rest.AjaxResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
 
 
/**
 * @author: Lawson
 * @date: 2021/5/11
 * @description: TODO 類描述
 */
@RestControllerAdvice
public class GlobalExceptionHandler {
 
    private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class);
 
    /**
     * 處理自定義異常
     * @param e
     * @return
     */
    @ExceptionHandler(value = BusinessException.class)
    public AjaxResult bizExceptionHandler(BusinessException e) {
        log.error(e.getErrorMsg(), e);
        return AjaxResult.defineError(e);
    }
 
    /**
     * 處理其它異常
     */
    @ExceptionHandler(value = Exception.class)
    public AjaxResult exceptionHandler(Exception e) {
        log.error(e.getMessage(), e);
        return AjaxResult.otherError(ErrorEnum.INTERNAL_SERVER_ERROR);
    }
}

到此這篇關(guān)于Spring Boot全局統(tǒng)一異常處理器的文章就介紹到這了,更多相關(guān)Spring Boot異常處理器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論