spring 自定义全局异常

64 篇文章 0 订阅
52 篇文章 0 订阅

1、定义全局异常处理适配器,可以多个,我这目前只用一个:

/**
 * 自定义异常类
 */
public class XdException extends RuntimeException {


    /**
     * 状态码
     */
    private Integer code;
    /**
     * 异常消息
     */
    private String msg;

    public XdException(int code, String msg){
        super(msg);
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }
}

定义Exception拦截配,使用spring注解@ControllerAdvise

/**
 * 异常处理控制器
 */
@ControllerAdvice
public class XdExceptionHandler {


    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData Handler(Exception e){

        if(e instanceof XdException){
            XdException xdException =  (XdException)e;
            return JsonData.buildError(xdException.getMsg(),xdException.getCode());
        }else{
            return JsonData.buildError("全局异常,未知错误");
        }
    }


}

全局返回封装类:

package net.xdclass.xdvideo.domain;

import java.io.Serializable;

/**
 * 功能描述:工具类
 *
 * <p> 创建时间:May 14, 2018 7:58:06 PM </p>
 */
public class JsonData implements Serializable {

   /**
    * 
    */
   private static final long serialVersionUID = 1L;

   private Integer code; // 状态码 0 表示成功,1表示处理中,-1表示失败
   private Object data; // 数据
   private String msg;// 描述

   public JsonData() {
   }

   public JsonData(Integer code, Object data, String msg) {
      this.code = code;
      this.data = data;
      this.msg = msg;
   }

   // 成功,传入数据
   public static JsonData buildSuccess() {
      return new JsonData(0, null, null);
   }

   // 成功,传入数据
   public static JsonData buildSuccess(Object data) {
      return new JsonData(0, data, null);
   }

   // 失败,传入描述信息
   public static JsonData buildError(String msg) {
      return new JsonData(-1, null, msg);
   }

   // 失败,传入描述信息,状态码
   public static JsonData buildError(String msg, Integer code) {
      return new JsonData(code, null, msg);
   }

   // 成功,传入数据,及描述信息
   public static JsonData buildSuccess(Object data, String msg) {
      return new JsonData(0, data, msg);
   }

   // 成功,传入数据,及状态码
   public static JsonData buildSuccess(Object data, int code) {
      return new JsonData(code, data, null);
   }

   public Integer getCode() {
      return code;
   }

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

   public Object getData() {
      return data;
   }

   public void setData(Object data) {
      this.data = data;
   }

   public String getMsg() {
      return msg;
   }

   public void setMsg(String msg) {
      this.msg = msg;
   }

   @Override
   public String toString() {
      return "JsonData [code=" + code + ", data=" + data + ", msg=" + msg
            + "]";
   }

}

若果感觉还可以就关注一下吧,谢谢!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值