java面试题网

普通会员

483

帖子

9

回复

187

积分

楼主
发表于 2019-08-26 15:24:39 | 查看: 5052| 回复: 0

异常处理(掌握)

异常处理(掌握)

常用的 SpringMVC 异常处理方式主要有三种:

➢ 使用系统定义好的异常处理器 SimpleMappingExceptionResolver

➢ 使用自定义异常处理器

➢ 使用异常处理注解

SimpleMappingExceptionResolver 异常处理器

该方式只需要在 SpringMVC 配置文件中注册该异常处理器 Bean 即可。该 Bean 比较特殊,没有 id 属性,无需显式调用或被注入给其它 ,当异常发生时会自动执行该类。

项目:simpleMappingExceptionResolver。在项目 receiveParameters-property 上修改。

自定义异常类

定义三个异常类:NameException、AgeException、StudentException。其中 StudentException 是另外两个异常的父类。

异常处理(掌握)_www.wityx.com

异常处理(掌握)_www.wityx.com

异常处理(掌握)_www.wityx.com

(1) 修改 Controller

异常处理(掌握)_www.wityx.com

(2) 注册异常处理器

异常处理(掌握)_www.wityx.com

➢ exceptionMappings:Properties 类型属性,用于指定具体的不同类型的异常所对应的异常响应页面。Key 为异常类的全限定性类名,value 则为响应页面路径

➢ defaultErrorView:指定默认的异常响应页面。若发生的异常不是 exceptionMappings 中指定的异常,则使用默认异常响应页面。

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

(3) 定义异常响应页面

在 WebRoot 下新建一个目录 errors,在其中定义三个异常响应页面。

异常处理(掌握)_www.wityx.com

异常处理(掌握)_www.wityx.com

自定义异常处理器

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

自定义异常处理器,需要实现HandlerExceptionResolver接口,并且该类需要在SpringMVC配置文件中进行注册。

项目:customExceptionResolver。在项目 simpleMappingExceptionResolver 上修改。

(1) 定义异常处理器

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

异常处理(掌握)_www.wityx.com

(2) 注册异常处理器

异常处理(掌握)_www.wityx.com

异常处理注解

使用注解@ExceptionHandler 可以将一个方法指定为异常处理方法。该注解只有一个可选属性 value,为一个 Class 数组,用于指定该注解的方法所要处理的异常类,即所要匹配的异常。

而被注解的方法,其返回值可以是 ModelAndView、String,或 void,方法名随意,方法参数可以是 Exception 及其子类对象、HttpServletRequest、HttpServletResponse 等。系统会自动为这些方法参数赋值。

对于异常处理注解的用法,也可以直接将异常处理方法注解于 Controller 之中。

异常处理(掌握)_www.wityx.com

不过,一般不这样使用。而是将异常处理方法专门定义在一个类中,作为全局的异常处理类。需要使用注解@ControllerAdvice , 字面理解就是“控制器增强” ,是给控制器对象增强功能的。使用@ControllerAdvice 修饰的类中可以使用@ExceptionHandler。

当使用@RequestMapping 注解修饰的方法抛出异常时,会执行@ControllerAdvice 修饰的类中的异常处理方法。

@ControllerAdvice 是使用@Component 注解修饰的,可以 扫描到@ControllerAdvice 所在的类路径(包名),创建对象。

项目:annotationExceptionResolver。在项目 customExceptionResolver 上修改。

(1) 定义全局异常处理类

异常处理(掌握)_www.wityx.com

(2) 定义 Spring 配置文件

异常处理(掌握)_www.wityx.com


文章来自www.wityx.com,转载请注明出处!原文地址http://www.wityx.com/post/1221_1_1.html


java面试题交流群:327440556

您需要登录后才可以回帖 登录 | 立即注册

java面试题网www.wuliaokankan.cnjava建站系统提供技术支持V2.1 网站地图 © 2016-2018