首先,当DAO层Catch到SQL异常,应该让相应的事务回滚,并继续抛出该异常
conn.rollback();
throw e;
在方法声明时throws这个异常;
第二,在Service层调用到Dao层时,try catch这个异常,在catch住中把它处理为RuntimeException异常;
处理过程是:自定义一个继承自RuntimeException的异常类AppRuntimeException;
catch(){
new AppRuntimeException();
}
第三,在Servlet中使用配置文件web.xml注册这个Exception,或者注册为RuntimeException,调用Service时,如果发生这个异常,则会跳转到相关的友好的面向用户的错误页面;
注意:如果页面未转向,则可能是反射过程中抛出的其他异常截获了我们自定义的这个RuntimeException,我们可以在这个异常中做出处理,让它转换为我们自定义的RuntimeException;
第四,以上我们只是简单的处理了异常,一般正常的与业务相关的异常;