springBoot异常处理流程
对于异常处理,是由ExceptionHandlerErrorResolver进行处理,会由该类分成多个分支来对不同的异常进行不同的处理
1.自定义异常页面
对于自定义异常界面,即404、500等错误的处理。(在Thymeleaf的模版引擎下)DefauleErrorViewResolver会先到templates/error下寻找是否有对应的404.html,4**.html等文件。若存在,则会直接返回一个ModelAndView使得原方法进行解析后显示,若不存在,则会到默认的静态资源路径下进行遍历寻找是否存在,若存在也如上述所示返回一个ModelAndView,若不存在,则会返回我们常见的系统默认的界面。
2.全局异常
是用来处理细化出来的java异常例如空指针、运算等异常异常。底层是由ExceptionHandlerErrorResolver进行处理,当异常发生后会执行doResolverHandler方法,其中的参数是由错误传过来封装成的相关对象。首先查找是否有我们自定义的处理异常的handlerl类以及方法,若存在则会通过反射来调用我们自定义的符合条件的方法,而如果不存在则会根据java异常所泛化的自定义异常按照一的方式进行处理,例如空指针异常则为500即服务器出现错误。
3.自定义异常
通过继承RuntimeException类来自定义异常,我们可以对状态码(HttpStatus)与异常的提示信息决定。同样,作为java异常中的一部分,首先通过全局异常的处理机制来处理,而当我们没有对错误进行指定时,则会根据我们的状态码根据自定义异常的流程去寻找相对应的html文件进行处理