通常来说,我们编程程序不可能总是按照常规的逻辑跑起来,程序运行起来后,随着时间的推移会遇到各种各样的异常。这些异常中,有的是输入引起的(未测试到),有的是运行环境引起,诸如此类的原因不一而足。spring boot在处理这些异常的过程中,有自己的一套默认机制,当然,我们也可以根据自己的需求来定制异常处理逻辑,满足日常开发和业务需求。

一、默认机制

  • 1、web浏览的时候,返回404页面
  • 2、其他客户端(比如APP),返回json错误数据

二、定制错误

1、定制错误页面

  • 1)在模板引擎文件夹下面,在error路径下放置以状态码为名字的html,就可以定制指定状态码的页面。比如:404错误,就需要放置:404.html到error文件路径下。
  • 2)使用4xx,5xx为名字的html文件,将会模糊匹配到相应error级别的错误处理。比如:
    4xx.html 会在发生404 或者 402错误的时候被调用。

注意:如果存在404.html页面,将会优先匹配到status=404错误。

  • 3)可以使用行内表达式来获取系统的错误信息。

注意:错误页面的显示顺序为:自定义模板引擎路径下:error/xx.html > 自定义静态资源路径下的xx.html页面 > spring boot 默认页面

2、定制错误json

  • 1)定义错误处理controller,使用@ControllerAdvice注释,让controller变成异常处理器。
@ControllerAdvice
class MyExceptionHandler{

}
  • 2)定义错误处理方法,使用@ExceptionHandler定义需要处理的异常。
@ControllerAdvice
class MyExceptionHandler{
 
    @ResponseBody
    @ExceptionHandler(MyException.class)
    public String handler(Exception e){
        //do some thing
    }

}
  • 3)通过自定义ErrorAttributes来定制全局数据信息,需要使用@compant注解加入到容器中,替代默认的DefaultErrorAttributes。

完毕。