我们可以直接在Controller 里创建 带有 @ExceptionHandler 注解的异常处理方法。
@ExceptionHandler({ArithmeticException.class})
public String exception(Exception e) {//出現java.lang.ArithmeticException异常时交由该方法处理
System.out.println(e.getMessage());
return "error";
}
也可以单独创建一个java类加上 @ControllerAdvice 对所有Controller 类里的同样异常进行处理。
@ControllerAdvice
public class MathExceptionHandler {
@ExceptionHandler(ArithmeticException.class)
public String exception(Exception e) {
System.out.println(e.getMessage());
return "userinfo/error";
}
}
同时也可以配置在 Spring文件中配置 SimpleMappingExceptionResolve 用于服务器端当发生异常时根据发生的异常类型跳转到指定的视图以显示异常信息
<!-- 配置SimpleMappingExceptionResolver视图解析器 -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 配置异常属性名:exceptionAttribute默认值为exception,此时jsp页面通过${exception}显示异常信息;添加<property name="exceptionAttribute" value="ex"></property>配置后,则通过${ex}显示异常信息 -->
<property name="exceptionAttribute" value="ex"></property>
<property name="exceptionMappings">
<props>
<!-- 服务器端异常均指向error.jsp页面 -->
<prop key="java.lang.Throwable">error</prop>
</props>
</property>
</bean>
在SpringMVC一个请求执行过程中,一旦爆发了一个异常就会在 doDispatch 中被捕获,放入 dispatchException 中然后传给 processDispatchResult 方法处理。
在进入processDispatchResult ,判断exception 不为空,向下执行 processHandlerException
对每一个解析器调用异常解析函数,返回一个视图,此函数结束之后返回至 render 方法。render参考今天的同一篇博文。
进入 resolveException 执行异常解析。
在上述的接口中我们可以看出 使用SimpleMappingException 的接口
爬。有点乱。先码着,回来再改。