1.默认机制
错误处理机制的自动配置都在ErrorMVCAutoConfiguration中,两大核心机制:
springboot会自适应处理错误,响应页面或JSON数据
springMVC的错误处理机制依然保留,MVC处理不了,才会交给boot进行处理
错误处理的自动配置都在ERRORAutoConfiguration中,两大核心机制;
SpringBoot会自适应处理错误,响应页面或者JSON数据
SpringMVC的错误处理机制依然保留,MVC处理不了,才会交给boot进行处理
2.SpringMVC的错误处理流程
测试一下
结果如下:
也可以这样写相当于写一个集中处理,@ControllerAdvice相当于告诉Spring我是一个异常的集中处理类
3.转交给SpringBoot的异常处理流程
如果SpringMVC的异常处理没有该异常就会转交给SpringBoot,转发/error路径,SpringBoot在底层写好一个BasicErrorController的组件,专门处理请求。
解析一个错误页,如果发生了500、503、404、403这些错误,如果有模板引擎,默认在classpath:/templates/error/精确码.html。如果没有模板引擎,在静态资源文件夹下找精确码.html
如果匹配不到 精确码.html这些错误页面,就去找5XX.html,4XX.html如果有模板引擎,默认在classpath:/templates/error/5XX.html,4XX.html。如果没有模板引擎,在静态资源文件夹下找5XX.html,4XX.html
如果模板引擎路径templates下有error.html页面,就直接渲染。