异常处理步骤流程
作者:互联网
1、执行目标方法,目标方法运行期间有任何异常都会被catch、而且标志当前请求结束;并且用 dispatchException
2、进入视图解析流程(页面渲染?)
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
3、mv = processHandlerException;处理handler发生的异常,处理完成返回ModelAndView;
- 1、遍历所有的 handlerExceptionResolvers,看谁能处理当前异常【HandlerExceptionResolver处理器异常解析器】
- 当发生异常时 会把异常赋值给dispatchException
当在执行mv = ha.handle(processedRequest, response, mappedHandler.getHandler());时就出现异常了
执行mappedHandler.triggerAfterCompletion(request, response, null);倒序的 然后返回NULL
- 第二次 然后 进入 ha.handle---invokeForRequest --doInvoke
return KotlinDetector.isSuspendingFunction(method) ? CoroutinesUtils.invokeSuspendingFunction(method, this.getBean(), args) : method.invoke(this.getBean(), args); - 进入到了BasicErrorController 处理浏览器或者非浏览器的跳转
-
调用processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);渲染
-
这个是自己追了一下 路径error的异常
- 2、系统默认的 异常解析器;
-
- 1、DefaultErrorAttributes先来处理异常。把异常信息保存到rrequest域,并且返回null;
- 2、默认没有任何人能处理异常,所以异常会被抛出
- 1、如果没有任何人能处理最终底层就会发送 /error 请求。会被底层的BasicErrorController处理
- 2、解析错误视图;遍历所有的 ErrorViewResolver 看谁能解析。
- 3、默认的 DefaultErrorViewResolver ,作用是把响应状态码作为错误页的地址,error/500.html
- 4、模板引擎最终响应这个页面 error/500.html
标签:处理,步骤,流程,response,mv,error,异常,mappedHandler 来源: https://www.cnblogs.com/dzs894330350/p/16687809.html