91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

springboot如何自定義異常并捕獲異常返給前端

發布時間:2021-11-15 09:08:32 來源:億速云 閱讀:744 作者:小新 欄目:開發技術

小編給大家分享一下springboot如何自定義異常并捕獲異常返給前端,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

背景

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

實現內容

捕獲了三類異常
1.業務異常

          BusinessException

2.系統異常 

        SystemException

3.其他異常

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

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

實現代碼

業務異常BusinessException類實現方式,繼承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();
	}
}

系統異常SystemException類實現方式,繼承RuntimeException,同業務異常類的實現方式一樣

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的方式來實現

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

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

springboot如何自定義異常并捕獲異常返給前端

 ExceptionAdvice 具體代碼實現如下:

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("系統異常信息:", 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("業務異常消息:", e.getMessage());
        ajaxJson.setRet(-1);
        ajaxJson.setMsg(e.getMessage());
        return ajaxJson;
    }
 
}

測試代碼

1.我們捕獲一個業務異常BusinessException,輸出aaa

springboot如何自定義異常并捕獲異常返給前端

 springboot如何自定義異常并捕獲異常返給前端

2.捕獲系統異常

throw new SystemException("aaaa");

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

springboot如何自定義異常并捕獲異常返給前端

以上是“springboot如何自定義異常并捕獲異常返給前端”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

红安县| 东安县| 喀什市| 讷河市| 湘潭县| 德州市| 清河县| 祥云县| 卢氏县| 怀仁县| 确山县| 大安市| 日土县| 马边| 巴林左旗| 进贤县| 南安市| 凤冈县| 平山县| 长岭县| 丹东市| 富阳市| 呼伦贝尔市| 逊克县| 勃利县| 衡水市| 肥东县| 奈曼旗| 东乡| 陆川县| 响水县| 樟树市| 手机| 通海县| 松阳县| 彝良县| 珲春市| 南涧| 休宁县| 鹤壁市| 贵南县|