概述
文章目录
- 0.前记
- 1.processHandlerException方法
- 1.1`@ExceptionHandler`注解下的异常
- 1.2`@ResponseStatus`注解下的方法
- 1.3`DefaultHandlerExceptionResolver`解析方法
0.前记
根据之前的文章DispatcherServlet.doDisptcher()
方法中的方法ha.handle
返回ModelAndView
处理的方法processDispatchResult
private void processDispatchResult(HttpServletRequest request, HttpServletResponse response,
@Nullable HandlerExecutionChain mappedHandler, @Nullable ModelAndView mv,
@Nullable Exception exception) throws Exception {
boolean errorView = false;
if (exception != null) {
if (exception instanceof ModelAndViewDefiningException) {
logger.debug("ModelAndViewDefiningException encountered", exception);
mv = ((ModelAndViewDefiningException) exception).getModelAndView();
}
else {
Object handler = (mappedHandler != null ? mappedHandler.getHandler() : null);
mv = processHandlerException(request, response, handler, exception);
errorView = (mv != null);
}
}
1.processHandlerException方法
这个方法就是如果出现异常的话, 异常解析器进行处理异常。
- 先判断是否是
@ExceptionHandler
注解下的方法, 如果是的话另外处理AbstractHandlerMethodExceptionResolver.doResolveException()
->ExceptionHandlerExceptionResolver.doResolveHandlerMethodException()
- 判断是否是
@ResponseStatus
注解下的方法RespinseStatusExceptionResolver.doResolveException
DefaultHandlerExceptionResolver.doResolveException()
这里的HandlerExceptionResolver
主要有3个实现类
1.1@ExceptionHandler
注解下的异常
AbstractHandlerMethodExceptionResolver.doResolveException()
1.2@ResponseStatus
注解下的方法
protected ModelAndView resolveResponseStatus(ResponseStatus responseStatus, HttpServletRequest request,
HttpServletResponse response, @Nullable Object handler, Exception ex) throws Exception {
int statusCode = responseStatus.code().value();
String reason = responseStatus.reason();
return applyStatusAndReason(statusCode, reason, response);
}
- 获取到装填码
- 获取到出错理由
- 然后渲染异常的页面
- 返回空的ModelAndView
1.3DefaultHandlerExceptionResolver
解析方法
这里比如handleMissingServletRequestParameter
这个 return
会跳转页面 + 返回空的ModelAndView
最后
以上就是舒心毛豆为你收集整理的SpringMvc 源码分析 (异常处理流程) (十三)的全部内容,希望文章能够帮你解决SpringMvc 源码分析 (异常处理流程) (十三)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复