-
首先 在请求的目标方法处理出现异常的时候 都会被catch 并且标志当前请求结束
并且用dispatchexception
-
进入错误视图的解析流程(页面的渲染)
processDispatchResult方法 参数有mv 和 dispatchException
-
mv = processHandler Exception;处理handler发生的异常,处理完成后返回模型视图
-
在执行请求的异常处理时 会依次遍历系统默认的视图解析器
-
如果所有默认的异常处理解析器都不能解析这个异常 那么tomcat底层会重新发出一个/error请求
遍历所有的ErrorViewResolve谁能解析出ModelAndView对象 就使用谁
而BasicErrorController中有一个解析错误视图的组件为defaultErrorView
几种自定义异常
-
定义全局异常处理器
@ControllerAdvice + @ExceptionHandler
原理:在请求的方法中发生错误时 会catch掉当前请求 并且执行异常处理
会遍历系统中的异常处理器 进行异常解析 其中就有一个ExceptionHandlerExceptionResolver
进行执行(我们自定义的方法) 最终返回一个ModelAndView对象
-
@ResponseStatus自定义异常
-
spring的底层异常
-
自定义HandlExceptionResolver定义异常 「@Order改变异常解析器的权重」