Springmvc之异常处理

Springmvc之异常处理

一、常用的springmvc异常处理主要有三种:

1,使用系统定义好的异常处理器SimpleMappingResolver

2,使用下定义异常处理器

3,使用异常处理注解

二、SimpleMappingResolver异常处理器

1,该方式只需要在 SpringMVC 配置文件中注册该异常处理器 Bean 即可。该 Bean 比较特

殊,没有 id 属性,无需显式调用或被注入给其它<bean/>,当异常发生时会自动执行该类。 

2,自定义异常处理器

3,注册异常处理器


->exceptionMappings:Properties 类型属性,用于指定具体的不同类型的异常所对应的异
常响应页面。Key 为异常类的全限定性类名,value 则为响应页面路径 
->defaultErrorView:指定默认的异常响应页面。若发生的异常不是 exceptionMappings 中
指定的异常,则使用默认异常响应页面。 

->exceptionAttribute:捕获到的异常对象。一般异常响应页面中使用。 

三、自定义异常处理器

使用 SpringMVC 定义好的 SimpleMappingExceptionResolver 异常处理器,可以实现发生
指定异常后的跳转。但若要实现在捕获到指定异常时,执行一些操作的目的,它是完成不了
的。此时,就需要自定义异常处理器。 
自定义异常处理器,需要实现 HandlerExceptionResolver 接口,并且该类需要在 SpringMVC

配置文件中进行注册。 

(1)定义异常处理器

当一个类实现了 HandlerExceptionResolver 接口后,只要有异常发生,无论什么异常,
都会自动执行接口方法 resolveException()。 


(2)注册异常处理器


四、异常处理注解

        使用注解@ExceptionHandler 可以将一个方法指定为异常处理方法。该注解只有一个可选属性 value,为一个 Class<?>数组,用于指定该注解的方法所要处理的异常类,即所要匹配的异常。 
        而被注解的方法,其返回值可以是 ModelAndView、String,或 void,方法名随意,方法参数可以是 Exception 及其子类对象、HttpServletRequest、HttpServletResponse 等。系统会自动为这些方法参数赋值。对于异常处理注解的用法,也可以直接将异常处理方法注解于 Controller 之中。 


        不过,一般不这样使用。而是将异常处理方法专门定义在一个 Controller 中,让其它
Controller 继承该 Controller 即可。但是,这种用法的弊端也很明显:Java 是“单继承多实现”
的,这个 Controller 的继承将这唯一的一个继承机会使用了,使得若再有其它类需要继承,

将无法直接实现。 

(1)定义异常处理的Controller



(2)修改Controller

让普通 Controller 继承自定义好的异常处理 Controller。 



猜你喜欢

转载自blog.csdn.net/king_cannon_fodder/article/details/80200235