异常统一处理

今天介绍一种处理异常的方法–全局异常统一处理

什么是全局异常统一处理:在独立的一个类中,定义一套对各种异常的处理机制,然后用@ControllerAdvice注解该类,统一对不同位置的不同异常进行处理。方便开发者维护等。使用方法:

1.自定义异常类

@Data
@NoArgsConstructor
public class GlobalException extends Exception{
    private String code;
    public GlobalException(String message, String code) {
        super(message);
        this.code = code;
    }
}

2.使用ControllerAdvice,控制器增强

@ControllerAdvice
@RestController
public class ecx {
    @ExceptionHandler(GlobalException.class)
    public ResultInfo handle(Exception e){
        ResultInfo result = new ResultInfo();
        if (e instanceof GlobalException) {
            e = (GlobalException) e;
            result.setCode(((GlobalException) e).getCode());
        }
        result.setMsg("系统异常信息:"+e.getMessage());
        return result;
    }
}

3.使用

@RestController
@RequestMapping("/demo")
public class demo {
        @RequestMapping("/test")
        public ResultInfo test() throws GlobalException {
            int v = (int) (Math.random()*2);
            //简单测试,假装这是处理后d逻辑
            if(v==1)
               throw new GlobalException("密码错误","201");
            if(v==0)
                throw new GlobalException("用户名错误","201");
            else
                throw new GlobalException("系统异常","201");
        }
}

所以在这个点里面主要有几个注解需要我们理解。

  • @ControllerAdvice 这个注解主要是拿来声明一个异常处理类,所有产生的异常都会提交到·这里进行处理
  • ExceptionHandler 这个注解主要是用来处理异常的,比如存在NPE异常等,我们就可以使用@ExceptionHnadler(NullPointException.class),其他的以此类推。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值