Spring Springboot异常处理

话不多说 直接上干货

1.自定义异常

先写你自定义的异常

/**
 * 自定义异常
 * @author 86176
 */
public class MyException extends RuntimeException{
    private Integer code;
    private String message;


    public MyException(Enum demo01) {
        this.code=demo01.getCode();
        this.message = demo01.getMessage();
    }

    public Integer getCode() {
        return code;
    }

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

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }
}

2.创建异常枚举类

这里创建个枚举类 方便调用

/**
 * 异常枚举类
 * @author 86176
 */
public enum Enum {
    //这里写自定义异常
    DEMO_01(500,"自定义异常测试");

    private final Integer code;
    private final String message;
    Enum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }

    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}

3.统一返回格式

主要前端接收JSON数据时格式统一

/**
 * <p>项目文档: 响应数据封装</p>
 *
 * @author hexu
 * @version V1.0
 */
public class ResponseMessage {
    private String errorCode;
    private String errorMsg;
    private Map<String, Object> objectMap = new HashMap<>();

    public String getErrorCode() {
        return errorCode;
    }

    public void setErrorCode(String errorCode) {
        this.errorCode = errorCode;
    }

    public String getErrorMsg() {
        return errorMsg;
    }

    public void setErrorMsg(String errorMsg) {
        this.errorMsg = errorMsg;
    }

    public Map<String, Object> getObjectMap() {
        return objectMap;
    }

    public void setObjectMap(Map<String, Object> objectMap) {
        this.objectMap = objectMap;
    }

    public ResponseMessage addObject(String key, Object value) {
        this.objectMap.put(key, value);
        return this;
    }

    public static ResponseMessage success() {
        ResponseMessage rm = new ResponseMessage();
        rm.setErrorCode("100");
        rm.setErrorMsg("处理成功");
        return rm;
    }

    public static ResponseMessage error() {
        ResponseMessage rm = new ResponseMessage();
        rm.setErrorCode("200");
        rm.setErrorMsg("处理失败");
        return rm;
    }
}

4.统一异常处理

有什么异常就处理什么样的 需要的话自己添加 前端获取JSON数据的时候就可获取异常信息再进行渲染

/**
 * 统一异常处理
 * @author 86176
 */
@ControllerAdvice
public class MyExceptionHandler {
    /**
     * 处理自定义异常
     * @param e
     * @return
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ResponseMessage map(MyException e){
       return ResponseMessage.error().addObject("code",e.getCode()).addObject("msg",e.getMessage());
    }

    /**
     * 处理断言异常
     * @param e
     * @return
     */
    @ExceptionHandler(value = IllegalArgumentException.class)
    @ResponseBody
    public ResponseMessage map(IllegalArgumentException e){
        return ResponseMessage.error().addObject("msg",e.getMessage());
    }

    /**
     * 效验错误异常处理
     * @param e
     * @return
     */
    @ExceptionHandler(value = MethodArgumentNotValidException.class)
    @ResponseBody
    public ResponseMessage map(MethodArgumentNotValidException e){
        BindingResult bindingResult = e.getBindingResult();
        ObjectError objectError = bindingResult.getAllErrors().stream().findFirst().get();
        return ResponseMessage.error().addObject("msg",objectError.getDefaultMessage());
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值