(办公)springboot配置全局异常

   项目用到了springboot,本来很高兴,但是项目里什么东西都没有,验证,全局异常这些都需要自己区配置。最近springboot用的还是蛮多的,我还是做事情,把经验发表一下.全局统一的异常,首先异常的返回值和正常返回的返回值应该统一json.返回值的code和msg可以用enum保存起来,controller层的方法抛出异常.下面看代码.

      

package com.imooc.shoptest001.handle;

import com.imooc.shoptest001.utils.JsonData;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 全局异常捕获
 */
@ControllerAdvice
public class ExceptionHandle {

    /**
     * ExceptionHandler 捕获什么异常
     * ResponseBody 返回json格式
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData handle(Exception ex){
        ex.printStackTrace();
        System.out.println(ex.toString());
        return JsonData.error500(ex.getMessage());
    }
}

      

package com.imooc.shoptest001.utils;

public enum JsonDataEnum {
    ERROR(-1,"失败"),
    SUCCESS(0,"成功"),
    ;
    private Integer code;

    private String msg;

    JsonDataEnum(Integer code,String msg){
        this.code = code;
        this.msg = msg;
    }

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}
package com.imooc.shoptest001.utils;

/**
 * 前台返回json类
 */
public class JsonData<T> {
    /**
     * 返回状态
     */
    private boolean status;
    /**
     * 错误码/正确码
     */
    private Integer code;
    /**
     * 消息.
     */
    private String msg;
    /**
     * 具体的内容.
     */
    private T data;

    public static JsonData success(String msg,Object data){
        JsonData jsonData = new JsonData();
        jsonData.setMsg(msg);
        jsonData.setStatus(true);
        jsonData.setCode(200);
        jsonData.setData(data);
        return jsonData;
    }

    public static JsonData ok(){
        JsonData jsonData = new JsonData();
        jsonData.setStatus(true);
        jsonData.setCode(200);
        return jsonData;
    }

    public static JsonData error(Integer code,String msg){
        JsonData jsonData = new JsonData();
        jsonData.setStatus(false);
        jsonData.setCode(code);
        jsonData.setMsg(msg);
        return jsonData;
    }

    public static JsonData error500(String msg){
        JsonData jsonData = new JsonData();
        jsonData.setStatus(false);
        jsonData.setCode(500);
        jsonData.setMsg(msg);
        return jsonData;
    }



    public boolean isStatus() {
        return status;
    }

    public void setStatus(boolean status) {
        this.status = status;
    }

    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;
    }

    public T getData() {
        return data;
    }

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

猜你喜欢

转载自www.cnblogs.com/historylyt/p/10588658.html