大家好,今天谈谈spring mvc的异常处理架构,应该说异常处理也是mvc框架的一个不可或缺的基本功能。那么在什么情况下会调用异常处理器呢,z在处理器处理请求出现异常的情况下会调用异常处理器执行善后事宜。用伪代码来表述下,基本上是这样的模型。try{处理请求} catch{ 调用异常处理器 }。
spring默认会注册三种异常处理器,按优先级从高到低分别是“ExceptionHandlerExceptionResolver”,“ResponseStatusExceptionResolver”,“DefaultHandlerExceptionResolver”。不过其中的ResponseStatusExceptionResolver并不太使用,相反另一个非默认需要用户手动注册的异常处理器“SimpleMappingExceptionResolver”反倒是经常使用的,所以本篇博客主要介绍“ExceptionHandlerExceptionResolver”,“DefaultHandlerExceptionResolver”,“SimpleMappingExceptionResolver”这三个异常处理器的实现原理。下图是异常处理模块的类结构图。
最顶层的HandlerExceptionResolver接口只定义了一个方法,就是处理异常对象。