SpringBoot2.X全局异常处理
- 为什么要配置全局异常
- 不配全局服务端报错场景:1/0,空指针等
- 配置的好处
- 统一的错误页面或者错误代码
- 对用户友好显示
- pringboot2.X怎么在项⽬中配置全局异常
- 类加载注解
- @ControllerAdvice,返回页面,如果需要返回json数据,则⽅法需要加@ResponseBody
- @RestControllerAdvice, 默认返回json数据,⽅法不需要加@ResponseBody
- 方法处理器
- 捕获全局异常,处理所有不可知的异常
- @ExceptionHandler(value=Exception.class)
- 类加载注解
不配置异常处理的演示
我们正常请求一个接口数据,然后在里面内置一个异常,看一下返回的数据是什么
可以看到浏览器返回的数据对于用户来说,是看不懂的一串代码,体验非常不友好,这时候就需要用到配置异常处理了
配置异常处理
新建一个handler包,在里面创建一个异常处理类,编写下面代码
public class ExtHandler {
@ExceptionHandler(value = Exception.class)
Object handlerException(Exception e, HttpServletRequest request){
return JsonData.buildError("服务器出错啦,稍后再访问",-2);
}
}
重新请求接口数据:
异常处理跳转到错误页面
有时候需求需要实现异常跳转,这里用thymeleaf演示一下
@ControllerAdvice
public class ExtHandler {
@ExceptionHandler(value = Exception.class)
Object handlerException(Exception e, HttpServletRequest request){
ModelAndView modelAndView=new ModelAndView();
modelAndView.setViewName("error.html");
modelAndView.addObject("msg","异常啦");
return modelAndView;
}
}