最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)文章

  • java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例

    java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例

    這篇文章主要介紹了java實(shí)體對(duì)象與Map之間的轉(zhuǎn)換工具類代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Struts2源碼分析之ParametersInterceptor攔截器

    Struts2源碼分析之ParametersInterceptor攔截器

    這篇文章主要介紹了Struts2源碼分析之ParametersInterceptor攔截器,ParametersInterceptor攔截器其主要功能是把ActionContext中的請(qǐng)求參數(shù)設(shè)置到ValueStack中,,需要的朋友可以參考下
    2019-06-06
  • springboot中使用ConstraintValidatorContext驗(yàn)證兩個(gè)字段內(nèi)容相同

    springboot中使用ConstraintValidatorContext驗(yàn)證兩個(gè)字段內(nèi)容相同

    開(kāi)發(fā)修改密碼功能時(shí),通過(guò)ConstraintValidator校驗(yàn)新密碼和確認(rèn)新密碼的一致性,首先定義Matches注解和DTO對(duì)象,然后創(chuàng)建MatchesValidator類實(shí)現(xiàn)驗(yàn)證邏輯,對(duì)springboot驗(yàn)證字段內(nèi)容相同問(wèn)題感興趣的朋友一起看看吧
    2024-10-10
  • Java兩種方式實(shí)現(xiàn)動(dòng)態(tài)代理

    Java兩種方式實(shí)現(xiàn)動(dòng)態(tài)代理

    Java 在 java.lang.reflect 包中有自己的代理支持,該類(Proxy.java)用于動(dòng)態(tài)生成代理類,只需傳入目標(biāo)接口、目標(biāo)接口的類加載器以及 InvocationHandler 便可為目標(biāo)接口生成代理類及代理對(duì)象。我們稱這個(gè)Java技術(shù)為:動(dòng)態(tài)代理
    2020-10-10
  • springboot+thymeleaf打包成jar后找不到靜態(tài)資源的坑及解決

    springboot+thymeleaf打包成jar后找不到靜態(tài)資源的坑及解決

    這篇文章主要介紹了springboot+thymeleaf打包成jar后找不到靜態(tài)資源的坑及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java中TESTful架構(gòu)原理分析

    java中TESTful架構(gòu)原理分析

    這篇文章主要介紹了對(duì)java架構(gòu)中TESTful架構(gòu)原理進(jìn)行了詳細(xì)的原理分析,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-09-09
  • Maven工程路徑映射的實(shí)現(xiàn)示例

    Maven工程路徑映射的實(shí)現(xiàn)示例

    本文主要介紹了Maven工程路徑映射的實(shí)現(xiàn)示例,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04
  • Spring Cache擴(kuò)展功能實(shí)現(xiàn)過(guò)程解析

    Spring Cache擴(kuò)展功能實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了Spring Cache擴(kuò)展功能實(shí)現(xiàn)解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • 零基礎(chǔ)寫Java知乎爬蟲之準(zhǔn)備工作

    零基礎(chǔ)寫Java知乎爬蟲之準(zhǔn)備工作

    上個(gè)系列我們從易到難介紹了如何使用python編寫爬蟲,小伙伴們反響挺大,這個(gè)系列我們來(lái)研究下使用Java編寫知乎爬蟲,小伙伴們可以對(duì)比這看下。
    2014-11-11
  • Spring Batch遠(yuǎn)程分區(qū)的本地Jar包模式的代碼詳解

    Spring Batch遠(yuǎn)程分區(qū)的本地Jar包模式的代碼詳解

    這篇文章主要介紹了Spring Batch遠(yuǎn)程分區(qū)的本地Jar包模式,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09

最新評(píng)論

铜鼓县| 长宁区| 渭南市| 黎川县| 九龙城区| 郓城县| 怀仁县| 南部县| 卓资县| 临沧市| 安庆市| 赫章县| 深泽县| 南靖县| 毕节市| 邵阳县| 丰镇市| 武安市| 南阳市| 芦山县| 辛集市| 五河县| 柳林县| 金寨县| 蓬溪县| 搜索| 新昌县| 汶上县| 南郑县| 安西县| 泽库县| 平山县| 苍梧县| 乐业县| 霸州市| 饶阳县| 贺州市| 太谷县| 东兰县| 嘉义市| 青冈县|