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);
}
后序完善。。。。。

本文介绍了如何在SpringBoot中实现统一异常处理,包括引入数据校验依赖、创建异常处理类并使用@ControllerAdvice或@RestControllerAdvice注解进行标记,以及定义异常处理方法,返回自定义错误信息。通过这种方式,可以增强应用的健壮性和用户体验。
1511

被折叠的 条评论
为什么被折叠?



