SpringMVC的异常处理器

      在项目中,进行异常处理都是非常有必要的,而且你不能把一些只有程序员才能看懂的错误代码抛给用户去看,所以这时候进行统一的异常处理,展现一个比较友好的错误页面就显得很有必要了。跟其他MVC框架一样,springMVC也有自己的异常处理机制。 

      springMVC 提供的异常处理主要有两种方式,一种是直接实现自己的HandlerExceptionResolver,当然这也包括使用Spring已经为我们提供好 的SimpleMappingExceptionResolver和DefaultHandlerExceptionResolver,另一种是使用注解 的方式实现一个专门用于处理异常的Controller——ExceptionHandler。

1.自定义异常处理器

准备工作(自定义异常类和异常处理器类)

SpringMVC的异常处理器

配置文件springMVC.xml配置异常处理器bean

SpringMVC的异常处理器

测试代码

SpringMVC的异常处理器 

2.使用注解定义全局的异常处理

 SpringMVC的异常处理器

关于ExceptionHandler(参数) 

参数:可以是自定义异常类型,也可以是某个具体的异常类。根据具体的业务场景进行定义。。。。。

优先级

既然在SpringMVC中有两种处理异常的方式,那么就存在一个优先级的问题:

当发生异常的时候,SpringMVC会如下处理:

(1)SpringMVC会先从配置文件找异常解析器HandlerExceptionResolver

(2)如果找到了异常异常解析器,那么接下来就会判断该异常解析器能否处理当前发生的异常

(3)如果可以处理的话,那么就进行处理,然后给前台返回对应的异常视图

(4)如果没有找到对应的异常解析器或者是找到的异常解析器不能处理当前的异常的时候,就看当前的Controller中有没有提供对应的异常处理器,如果提供了就由Controller自己进行处理并返回对应的视图

(5)如果配置文件里面没有定义对应的异常解析器,而当前Controller中也没有定义的话,那么该异常就会被抛出来。