Spring Boot优雅地处理404异常问题
但是这种做法并不能统一处理404错误。我们先从Spring的源代码分析下。为了代码简单起见,这边直接从DispatcherServlet的doDispatch方法开始分析。Spring MVC会根据请求URL的不同,配置的RequestMapping的不同,为请求匹配不同的HandlerAdapter。这个方法没什么内容,直接是调用了HttpRequestHandler类的handleRequest方法。这个方法很简单,就是设置404响应码,将Response的errorState状态从0设置成1,然后就返回响应了。整个过程并没有发生任何异常,所以不能触发Spring的全局异常处理机制。到这边还有一个问题没有解决:就是下面的404提示信息是怎么返回的。Response响应被返回,进入org.apache.catalina.core.StandardHostValve类的invoke方法进行处理。这个方法“兜兜转转”又进入了StandardHostValve的custom方法。这个方法中将请求重新forward到了"/error"接口。所以如果我们开着Debug日志的话,你会在后台看到下面的日志。
用户评论