Contents

第一遍看源码分析流程

入口时dispatchServlet的doDispatch方法,processDispatchResult是请求结束的统一处理,不管是不是异常。
如果传入exception是不是空,说明发生了异常,判断是不是网页的异常。调用processHandlerException处理异常。

其中有一个handlerExceptionResolvers数组,是initStrategies方法在dodispatch初始化的时候初始化的。
找到可以处理这个异常的HandlerExceptionResolver,调用resolveException方法去处理异常,
首先shouldApplyTo方法,resolver是不是支持这个handler,如果支持调用doResolveException,然后调用doResolveHandlerMethodException
getExceptionHandlerMethod获取具体的调用方法,然后invokeAndHandle去实际调用异常处理方法。

只能说过了一个大致的流程,不能说完全懂了,里面很多细节还不清楚,我准备看一遍文档,梳理一下mvc的大致组件结构来再过一遍,看看会不会更清晰。

Contents