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

springboot 自定義異常并捕獲異常返給前端的實現(xiàn)代碼

 更新時間:2021年11月13日 14:40:54   作者:---清心寡欲---  
在開發(fā)中,如果用try catch的方式,每個方法都需要單獨實現(xiàn),為了方便分類異常,返回給前端,采用了@ControllerAdvice注解和繼承了RuntimeException的方式來實現(xiàn),具體實現(xiàn)內(nèi)容跟隨小編一起看看吧

背景

在開發(fā)中,如果用try catch的方式,每個方法都需要單獨實現(xiàn),為了方便分類異常,返回給前端,采用了@ControllerAdvice注解和繼承了RuntimeException的方式來實現(xiàn)。

實現(xiàn)內(nèi)容

捕獲了三類異常
1.業(yè)務(wù)異常

          BusinessException

2.系統(tǒng)異常 

        SystemException

3.其他異常

        利用@ExceptionHandler(RuntimeException.class)去捕獲

ExceptionAdvice類捕獲以上三類異常,并返回自定義類型格式數(shù)據(jù)

實現(xiàn)代碼

業(yè)務(wù)異常BusinessException類實現(xiàn)方式,繼承RuntimeException

public class BusinessException extends  RuntimeException {
	/**
	 * 錯誤編碼
	 */
	private String code;
 
	public BusinessException() {
		super();
	}
 
	public BusinessException(String message) {
		super(message);
	}
 
	public BusinessException(String code, String message) {
		super(message);
		this.code = code;
	}
 
	public BusinessException(Throwable cause) {
		super(cause);
	}
 
	public BusinessException(String message, Throwable cause) {
		super(message, cause);
	}
 
	public BusinessException(String message, Throwable cause,
							 boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
	}
 
	public String getCode() {
		return code;
	}
 
	public void setCode(String code) {
		this.code = code;
	}
 
	@Override
	public String getMessage() {
		return super.getMessage();
	}
 
	@Override
	public String toString() {
		return this.code + ":" + this.getMessage();
	}
}

系統(tǒng)異常SystemException類實現(xiàn)方式,繼承RuntimeException,同業(yè)務(wù)異常類的實現(xiàn)方式一樣

public class SystemException extends  RuntimeException {
	/**
	 * 錯誤編碼
	 */
	private String code;
 
	public SystemException() {
		super();
	}
 
	public SystemException(String message) {
		super(message);
	}
 
	public SystemException(String code, String message) {
		super(message);
		this.code = code;
	}
 
	public SystemException(Throwable cause) {
		super(cause);
	}
 
	public SystemException(String message, Throwable cause) {
		super(message, cause);
	}
 
	public SystemException(String message, Throwable cause,
                           boolean enableSuppression, boolean writableStackTrace) {
		super(message, cause, enableSuppression, writableStackTrace);
	}
 
	public String getCode() {
		return code;
	}
 
	public void setCode(String code) {
		this.code = code;
	}
 
	@Override
	public String getMessage() {
		return super.getMessage();
	}
 
	@Override
	public String toString() {
		return this.code + ":" + this.getMessage();
	}
}

ExceptionAdvice類,采用增強Controller注解 @ControllerAdvice的方式來實現(xiàn)

1.方法名稱和返回類型都可以根據(jù)自己需要定義;

2.采用注解@ExceptionHandler,就是捕獲的異常類型,我們只需要把需要捕獲異常類型寫進來就好

 ExceptionAdvice 具體代碼實現(xiàn)如下:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
 
@ControllerAdvice
public class ExceptionAdvice {
    public static Logger logger = LoggerFactory.getLogger(ExceptionAdvice.class);
 
    @ResponseBody
    @ExceptionHandler(SystemException.class)
    public Result handleException(Exception e) {
        logger.error("系統(tǒng)異常信息:", e);
        Result result = new Result();
        if (e instanceof BusinessException) {
            e = (BusinessException) e;
            result.setCode(((BusinessException) e).getCode());
        }
        result.setFailed(e.getMessage());
        return result;
    }
 
    @ExceptionHandler(RuntimeException.class)
    @ResponseBody
    public Result handleException(RuntimeException e) {
        logger.error("異常信息:", e.getMessage());
        Result result = new Result();
        result.setStatus(500);
        result.setMessage(e.getMessage());
        return result;
    }
 
    @ExceptionHandler(BusinessException.class)
    @ResponseBody
    public AjaxJson doBusinessException(Exception e) {
        AjaxJson ajaxJson = new AjaxJson();
        logger.error("業(yè)務(wù)異常消息:", e.getMessage());
        ajaxJson.setRet(-1);
        ajaxJson.setMsg(e.getMessage());
        return ajaxJson;
    }
 
}

測試代碼

1.我們捕獲一個業(yè)務(wù)異常BusinessException,輸出aaa

 

2.捕獲系統(tǒng)異常

throw new SystemException("aaaa");

3.其他的try catch的異常,這個就可以捕獲了 

到此這篇關(guān)于springboot 自定義異常并捕獲異常返給前端的文章就介紹到這了,更多相關(guān)springboot 自定義異常內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • BeanFactory與ApplicationContext的區(qū)別示例解析

    BeanFactory與ApplicationContext的區(qū)別示例解析

    這篇文章主要為大家介紹了BeanFactory與ApplicationContext的區(qū)別示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Spring中AOP注解@Aspect的使用詳解

    Spring中AOP注解@Aspect的使用詳解

    這篇文章主要介紹了Spring中AOP注解@Aspect的使用詳解,AOP是種面向切面的編程思想,面向切面編程是將程序抽象成各個切面,將那些影響了多個類的公共行為抽取到一個可重用模塊里,減少系統(tǒng)的重復代碼,降低模塊間的耦合度,增強代碼的可操作性和可維護性,需要的朋友可以參考下
    2024-01-01
  • mybatis實現(xiàn)特殊字段加密方式

    mybatis實現(xiàn)特殊字段加密方式

    這篇文章主要介紹了mybatis實現(xiàn)特殊字段加密,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • 整理java讀書筆記十五之java中的內(nèi)部類

    整理java讀書筆記十五之java中的內(nèi)部類

    內(nèi)部類是指在一個外部類的內(nèi)部再定義一個類。類名不需要和文件夾相同。本文給大家分享java讀書筆記十五之java中的內(nèi)部類,對java讀書筆記相關(guān)知識感興趣的朋友一起學習吧
    2015-12-12
  • Java實現(xiàn)簡單學生信息管理系統(tǒng)

    Java實現(xiàn)簡單學生信息管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單學生信息管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • springboot自動配置沒有生效的問題定位(條件斷點)

    springboot自動配置沒有生效的問題定位(條件斷點)

    這篇文章主要介紹了springboot自動配置未生效問題定位,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,下面我們來學習一下吧
    2019-06-06
  • 詳解JavaFX桌面應(yīng)用開發(fā)-Group(容器組)

    詳解JavaFX桌面應(yīng)用開發(fā)-Group(容器組)

    這篇文章主要介紹了JavaFX桌面應(yīng)用開發(fā)-Group(容器組),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Java之線程池使用與原理全面解析

    Java之線程池使用與原理全面解析

    這篇文章主要介紹了Java之線程池使用與原理全面解析,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • java8新特性之接口的static和default的使用

    java8新特性之接口的static和default的使用

    這篇文章主要介紹了java8新特性之接口的static和default的使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • spring自定義注解及使用方法詳細例子

    spring自定義注解及使用方法詳細例子

    這篇文章主要給大家介紹了關(guān)于spring自定義注解及使用方法的相關(guān)資料,Spring 是一個非常強大的框架,可以使用自定義注解來完成許多任務(wù),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01

最新評論

光泽县| 百色市| 天镇县| 瑞金市| 邵东县| 民和| 汝阳县| 太保市| 庄河市| 鄂伦春自治旗| 大宁县| 元氏县| 包头市| 海原县| 边坝县| 子洲县| 宁蒗| 南宫市| 仁布县| 东莞市| 绍兴县| 淮南市| 集贤县| 古田县| 东台市| 政和县| 福海县| 砚山县| 甘南县| 丰都县| 绥滨县| 旬阳县| 瑞丽市| 焦作市| 瓦房店市| 清水县| 额济纳旗| 溆浦县| 焉耆| 逊克县| 荆门市|