springboot自定义异常类+全局处理异常

springboot自定义异常类+全局处理异常

在项目运行中,难免会产生抛出一些待处理的异常,而java自带的异常信息不是很明确,所以会生成自己想要的一些数据格式。这时候就会用到自定义异常类。
抛出的运行错误的异常,必然是要处理的,我用到的是全局异常处理去处理这些异常,可以返回给前端你想返回的数据。

自定义异常类

自定义异常类需要继承java异常类的父类,因为一般需要处理的异常都是RuntimeException(运行时异常),所以一般就继承他。

注:

  1. get/set方法,toString方法一定要有
  2. Java异常机制 控制台最后打印出来的信息都是父类的信息,你光在自定义的子类赋值没用,需要调用父类构造器给父类赋值 两个解决方案:(1)在构造方法中调用父类的有参构造(2)重写getMessage方法
public class RoleException extends RuntimeException{

    //异常错误码
    private int code;
    //异常信息
    private String msg;

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

    public int getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

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

    @Override
    public String toString() {
        return "RoleException{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                '}';
    }
}

全局处理异常

本篇文章,我用的方法是 增强controller 即:基于@ControllerAdvice注解的Controller层的全局异常统一处理
注:@ControllerAdvice只能针对于Controller层的异常

我理解为:@ControllerAdvice 这个东西可以看作Controller ,return也是响应,只不过他的请求是controller层中的抛出的异常类

@ExceptionHandler(value = {要捕获的异常类.class})

@ControllerAdvice
public class GlobalException {

    /**
     * 处理RoleException异常
     * @param e
     * @return 异常信息
     */
    @ExceptionHandler(value = {RoleException.class})
    @ResponseBody
    public Object roleExceptionHandle(Exception e) {
        RoleException roleException = (RoleException) e;
        return new ExceptionMessage(roleException.getCode(),roleException.getMsg());
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值