SpringMVC中的异常处理器
12异常处理器
12.1基于配置的异常处理
HandlerExceptionResolver接口
接口实现类:
DefaultHandlerExceptionResolver和 SimpleMappingExceptionResolver
SpringMVC提供了自定义的异常处理器SimpleMappingExceptionResolver
使用方法:
直接在springmvc中声明使用
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!--
key: 异常的类型
value: 映射到视图的名称
-->
<prop key="java.lang.ArithmeticException">error</prop>
<prop key="java.lang.NullPointerException">error</prop>
<prop key="java.lang.RuntimeException">error</prop>
<prop key="java.lang.Exception">error</prop>
</props>
</property>
<property name="exceptionAttribute" value="ex"/>
</bean>
当程序运行时出现上面所声明的异常类型时,就会执行那个异常所对应的视图页面,如java.lang.ArithmeticException就会跳转到error页面
12.2基于注解的异常处理
需要书写异常的配置类
/**
* @ControllerAdvice 1.全局异常处理
*/
@ControllerAdvice
public class ExceptionController {
@ExceptionHandler(ArithmeticException.class)
public String handleException(Throwable ex, Model model) {
// ex表示控制器所出现的异常
model.addAttribute("ex", ex);
return "error";
}
}
上面的类上使用了@ControllerAdvice注解,该注解是声明处理全局异常的,同时对于单个方法上使用了@ExceptionHandler注解,是用来声明具体的异常类型,然后用下面的方法来处理该异常。