springboot统一异常处理

springboot统一异常处理

1、首先引入依赖(若不用数据校验则忽略这一步)

<!--数据校验依赖包-->
<dependency>
   <groupId>javax.validation</groupId>
   <artifactId>validation-api</artifactId>
   <version>2.0.1.Final</version>
</dependency>

2、定义一个统一异常处理类

public class TestExceptionControllerAdvice (){}

3、声明这个类是异常处理类
第一种就是在类上标注注解

@ControllerAdvice(basePackages = "xxx.xxx.xxx.controller") // 该类是一个异常处理类
@ResponseBody // 声明该类的所有方法都返回json格式的字符串
public class TestExceptionControllerAdvice (){}

第二种就是在类上标注注解(实际上就是第一种注解的升级版)

@RestControllerAdvice(basePackages = "xxx.xxx.xxx.controller")
public class TestExceptionControllerAdvice (){}

我们可以看@RestControllerAdvice注解的源码
在这里插入图片描述
实际上都是包含了第一种方法的两个注解
4、在该类上写上异常处理的方法

 @ExceptionHandler(value = Exception.class) //声明该方法是哪个异常发生时调用的方法
 public R handlerValidException(Exception e){
      log.error("出现异常啦!->{},型------>{}", e.getMessage(), e.getClass());
      BindingResult bindingResult = e.getBindingResult();
      List<FieldError> fieldErrors = bindingResult.getFieldErrors();
      Map<String, String> map = new HashMap<>();
      fieldErrors.forEach((item) -> {
          map.put(item.getField(), item.getDefaultMessage());
      });
      return R.error(BizCodeEnume.VALID_EXCEPTION.getCode(), BizCodeEnume.VALID_EXCEPTION.getMsg()).put("data", map);
  }

后序完善。。。。。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值