采用的是SpringMVC中的统一异常处理机制
编写异常类
异常分为Exception分为检查型异常 和非检查型异常,这里通过继承Exception的类属于非检查型异常
package com.fdd.exception;
public class MyException extends Exception {
private static final long serialVersionUID = -7419400618793645414L;
public MyException() {
super();
}
public MyException(String message) {
super(message);
}
public MyException(String message, Throwable cause,
boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
public MyException(String message, Throwable cause) {
super(message, cause);
}
public MyException(Throwable cause) {
super(cause);
}
}
SpringMVC的配置文件中进行相关配置
在SpringMVC中进行异常处理有三种方式,我暂时选择了配置SimpleMappingExceptionResolver的方式。
https://www.cnblogs.com/sunhaoyu/articles/5307496.html 详细介绍了三种异常处理的方式
个人认为使用实现HandlerExceptionResolver接口的方式更加灵活与清晰
<!-- 配置全局异常处理 -->
<bean id="exceptionResolver"
class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!-- 定义默认的异常处理页面,当该异常类型的注册时使用 -->
<property name="defaultErrorView" value="exception"></property>
<!-- 定义异常处理页面用来获取异常信息的变量名,默认名为exception -->
<property name="exceptionAttribute" value="ex"></property>
<!-- 定义需要特殊处理的异常,用类名或完全路径名作为key,异常也页名作为值 -->
<property name="exceptionMappings">
<props>
<prop key="com.fdd.exception.MyException">MyException</prop>
</props>
</property>
<!-- 表示在发生myException时返回视图myException,然后这里定义发生异常时视图myException对应的HttpServletResponse的返回码是600 -->
<property name="statusCodes"><!-- 定义在发生异常时视图跟返回码的对应关系 -->
<props>
<prop key="MyException">600</prop>
</props>
</property>
<property name="defaultStatusCode" value="404"/><!-- 表示在发生异常时默认的HttpServletResponse的返回码是多少,默认是200 -->
</bean>
另一类异常处理是在项目的web.xml中进行配置
<welcome-file-list>
<welcome-file>/index.jsp</welcome-file>
</welcome-file-list>
<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>