全局异常捕获器

对于当前系统中的所有报错,不让他进行跳转到404或500这种界面,而是把报错信息进行截取,可以对于一些固定的报错进行拦截,并返回相应错误信息

//全局的异常捕获器
//对于所有的加了 restController的方法全部进行配置
@ControllerAdvice(annotations = {RestController.class, Controller.class})
@ResponseBody
@Slf4j
public class GlobalExceptionHandler {

    //    只要产生了关于sql语句的异常,那么该方法就会运行
    @ExceptionHandler(SQLIntegrityConstraintViolationException.class)
    public R<String> exceptionHandler(SQLIntegrityConstraintViolationException ex) {
        log.error(ex.getMessage());
//        对于异常信息进行判断是否有关键字
        if (ex.getMessage().contains("Duplicate entry")) {
//           报错信息 Duplicate entry 'zhangsan' for key 'idx_username'
            String[] split = ex.getMessage().split(" ");
//            根据空格找回重复信息
            String msg = split[2] + "已存在";
//            返回报错信息
            return R.error(msg);
        }
        return R.error("失败了");
    }

}

1.如果想要使用先要创建一个 全局异常补货器类,并给他加上@ControllerAdvice这个注解

@ControllerAdvice是一个spring的AOP

2.在该全局捕获器中,定义一个异常处理器函数给他加上注解,并配置上SQL语句重复的异常类

@ExceptionHandler(SQLIntegrityConstraintViolationException.class)

3.上面设置的是一个在添加员工的时候出现的一个SQL语句错误,说的是添加重复

// 报错信息 Duplicate entry 'zhangsan' for key 'idx_username'

4.因为前端需要回显报错信息,所以这里将报错Message抓取,并通过split方法将其中的重复信息截取出来,并将其中的信息拼接并回显到前端

 因为数据库中的employee表中username键设置为unique所以需要进行这个配置

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值