spring boot错误处理机制详解
通常来说,我们编程程序不可能总是按照常规的逻辑跑起来,程序运行起来后,随着时间的推移会遇到各种各样的异常。这些异常中,有的是输入引起的(未测试到),有的是运行环境引起,诸如此类的原因不一而足。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。
完毕。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。