SpringMVC作为一个优秀的Web层开发框架,在框架中已经集成了异常处理机制,可以帮我们我们灵活地处理程序中发生的异常,提高了我们程序的稳定性,令我们对程序运行中发生的异常更加可以控制,今天我们讲的就是SpringMVC框架中的对于异常的处理机制。
本文中的所有程序都是基于SSM框架环境,以上一篇博文SSM框架整合为基础。
没有异常处理机制的时候
首先,我们在程序的Service层引入一个异常:
1 |
|
当我们运行程序,并调用该方法时,页面发生如下情况:
毫无疑问,对于不懂计算机知识的访问用户来说,这是一个极其不友好的界面,而我们在开发中应该尽量避免这种情况的发生,避免这种对用户不友好的情况发生。
SpringMVC中对于这种情况的处理机制,就被称作是异常处理机制。该机制可以让用户访问程序的时候,如果发生程序异常,那么会选择一种友好的方式提醒用户。
SpringMVC中对于异常的处理机制一共有三种,分别是:
- SpringMVC内置异常处理机制
- HandlerExceptionResolver自定义异常处理机制
- @ExceptionHandler异常处理机制
1、SpringMVC内置异常处理机制
SpringMVC框架内置的异常处理机制,可以直接在SpringMVC的配置文件中配置异常处理。配置完成之后,再次运行程序,发生异常之后就会出现如下界面:1
2
3
4
5
6
7
8<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--key是需要处理的异常类型,error是异常处理是跳转的页面,需要注意,该页面同样会经过视图解析器,所以直接配置页面的名字就可以了-->
<prop key="java.lang.Exception">error</prop>
</props>
</property>
</bean>
这是页面是我们自己写的error页面,这个页面就比原生的异常页面要友好的多了,而且在正式开发中,完全可以由前端开发人员制作一个精美友好的错误页面,让用户可以获得良好的访问体验。
2、HandlerExceptionResolver自定义异常处理机制
HandlerExceptionResolver自定义异常处理机制,需要我们自己写一个异常处理的类,并实现HandlerExceptionResolver接口,并重写其中的resolveException方法,需要注意的是,我们需要在这里类上加上@Component注解,表示它也是一个被Spring管理的JavaBean。
1 |
|
当使用这种机制处理异常,程序发生异常时情况如下:
不但有错误提示,还有错误的信息。
3、@ExceptionHandler异常处理机制
SpringMVC框架的第三种异常处理机制,就是使用@ExceptionHandler注解进行异常处理。
在Controller中写一个方法,并在该方法上使用@ExceptionHandler注解,当这个Controller中发生异常的时候,该注解的方法就会处理异常。
1 |
|
【注意】被@ExceptionHandler注解的方法的参数必须是固定的,否则运行时无法生效。
使用这种异常处理机制,异常发生时页面如下:
当然,使用@ExceptionHandler注解处理异常的时候,也可以配置全局异常处理。
单独写一个类,并在该类上使用@ControllerAdvice注解,那么这个类就是全局异常处理类。
1 |
|
使用@ExceptionHandler注解进行全局异常机制处理,当程序运行时发生异常,情况如下:
结束
SpringMVC的三种异常处理机制各有优劣,各位在使用SpringMVC的异常处理机制的时候,可以根据实际需求和自身喜好来进行配置开发。