spring mvc框架的异常处理机制
Spring MVC处理异常主要依赖于HandlerExceptionResolver接口及其实现类默认会启动它的三个对象:
- org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver
- org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver
- org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
我们也可以实现该接口并且配置成bean,spring mvc容器会自动找到它,这样会覆盖spring的默认配置。
- 1.ExceptionHandlerExceptionResolver的实现去寻找Controller类中有@ExceptionHandler注解的的方法,用其去处理异常,该方法的参数、返回值类型的限制跟@RequestMapping标识的处理方法一致。
- 2.ResponseStatusExceptionResolver会查找抛出的异常的类有没有注解:@ResponseStatus,如果有,就直接用Response.setError(errorCode,errorReason),参数取自ResponseStatus注解中的值。
- 3.DefaultHandlerExceptionResolver只处理了Spring内部经常出现的一些异常,设置Response.setError(errorCode,errorReason)后,直接返回空的ModelAndView对象。
各个HandlerExceptionResolver执行的顺序由Ordered接口,从前到后执行直到某个HandlerExceptionResolver返回了ModelAndView,如果所有HandlerExceptionResolver都没有返回,就将异常原样throw出去,交由servlet容器来处理。
相关推荐
与卿画眉共浮生 2020-11-13
smalllove 2020-11-03
hellowordmonkey 2020-11-02
丽丽 2020-10-30
周太郎 2020-10-28
greensomnuss 2020-10-27
职业炮灰 2020-10-16
与卿画眉共浮生 2020-10-14
feinifi 2020-10-14
feinifi 2020-10-13
yangjinpingc 2020-10-09
davis 2020-09-29
RickyIT 2020-09-27
lisongchuang 2020-09-27
tangxiong0 2020-09-03
meleto 2020-08-17
幸运小侯子 2020-08-14
YangHuiLiang 2020-08-06