做好准备,在doDispatch方法做好断点,观察源码运行。
略过前面的准备工作直接来到执行目标方法的哪一行上面
观察源代码
// Actually invoke the handler.
mv = ha.handle(processedRequest, response, mappedHandler.getHandler());
当前的错误是被我写在控制器方法中,所以只要放行这一句后就会出现异常,然后要做的就是观察底层如何处理异常。
在方法执行后出现异常后,程序捕获到异常来进行处理
//首先将捕获的一场转换为前面定义的异常类型 --Exception dispatchException = null;
catch (Exception ex) {
dispatchException = ex;
接着来到
//传入了request、response、异常、mv等进行处理异常
processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
进入后会来到Dispatcher Servlet内部的一个方法
//这个方法接收了上面传来的全部参数,并做处理,试图给出一个结果
private void processDispatchResult(HttpServletRequest request, HttpServletResponse response,
@Nullable HandlerExecu