异常处理器
前言
本文也是对于如何配置异常处理器的两种方式,xml和注解来分开讲解
零、前置知识
你一定见过这样的页面,当然也是很常见了,有时候会因为一点疏忽导致各种各样的错误。
但是如果是以这样的页面直接展示给用户,肯定是很不友好的,自然用户体验也是十分差。这时候就需要有自定义异常处理器,对于出现的异常进行处理和展示更好的信息反馈给用户,让用户体验上升。
SpringMVC提供了一个处理控制器方法执行过程中所出现的异常的接口:HandlerExceptionResolver
HandlerExceptionResolver接口的实现类有:DefaultHandlerExceptionResolver和SimpleMappingExceptionResolver(自定义)
一、异常处理器之XML配置
exceptionMappings异常的映射 将prop中配置的异常key于值error形成映射关系,如果出现了该异常类的异常,properties的键表示处理器方法执行过程中出现的异常,properties的值表示若出现指定异常时,设置一个新的视图名称,跳转到指定页面
exceptionAttribute则是将异常信息共享在请求域中,value值则是用于存储异常信息的
<!--配置异常处理器-->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!--设置将异常信息共享在请求域-->
<property name="exceptionAttribute" value="ex"></property>
</bean>
二、异常处理器之注解配置
prop操作properties配置文件时是不能使用put和get方法的 因为put和get操作的是Object类型,响应给页面的只能是字符串,Properties主要是操作配置文件的,配置文件也只能接受字符串的参数,Object类型的自然是不行的
//@ControllerAdvice将当前类标识为异常处理的组件
@ControllerAdvice
public class ExceptionController {
//@ExceptionHandler用于设置所标识方法处理的异常
@ExceptionHandler(ArithmeticException.class)
//ex表示当前请求处理中出现的异常对象
public String handleArithmeticException(Exception ex, Model model){
model.addAttribute("ex", ex);
return "error";
}
}
@ControllerAdvice 将当前类标识为异常处理的控制层组件,需要搭配@ExceptionHandler(异常类的Class)-----》绑定真正执行该异常的方法
形参中的ex用于存储异常的信息 model则是共享域中的数据,用于最后渲染页面的数据
总结
本文也算是配置的方式讲解,由于我也是小菜,后续会对文章进行加强,自然也很需要大家的监督,对于文章提出不足,会乐于采取大家的意见,进行整改