xml配置异常处理
SpringMVC提供了一个处理控制器方法执行过程中出现的异常的接口:HandlerExceptionResolver
SpringMVC有默认的异常处理器还可以自定义的异常处理器。
springmvc配置异常处理器
<!-- 自定义异常处理器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- exceptionMappings:异常映射 -->
<property name="exceptionMappings">
<props>
<!-- key设置要处理的异常,value设置出现异常时要跳转的页面所对应的逻辑视图 -->
<prop key="java.lang.ArithmeticException">error</prop>
</props>
</property>
<!-- 设置在共享在请求域中的异常信息的属性名 就可以通过属性名访问当前属性值也就是异常信息-->
<property name="exceptionAttribute" value="ex"></property>
</bean>
html
<h1>error.html</h1>
<p th:text="${ex}"></p>
<h1>index.html</h1>
<a th:href="@{/test/hello}">测试</a>
controller
@RequestMapping("/test/hello")
public String testHello(){
System.out.println(1/0);
return "success";
}
注解配置异常处理
@ControllerAdvice 注解:将当前类标识为异常处理的组件
@ExceptionHandler(ArithmeticException.class)注解:捕获异常和标记这方法是处理异常的。
controller
@ControllerAdvice //将当前类标识为异常处理的组件
public class ExceptionController {
//
@ExceptionHandler(ArithmeticException.class)
// ex表示控制器方法所出现的异常
public String handleException(Throwable ex, Model model){
model.addAttribute("ex",ex);
return "error";
}
}
思路
只要出现ArithmeticException.class的异常,就会通过下面的方法处理这个异常,
把异常信息共享到请求域,跳转到error 。