异常的处理, 要关注的几点
1. 项目当中,一定要有自定义的异常
原因:开发人员不能完全依赖于已有的异常体系,因为已有的异常体系对于用户来说,没有任何意义
用户不知道什么是类转换异常,用户不知道,所以程序当中一定要有自定义异常
2. 通过自定义异常将系统发生的异常信息转换成自己的异常信息
3. 自定义异常继承于Exception ,说明自定义的异常是checked exception (检查时异常)
4. 异常信息从哪里来?
对于一个完整的系统来说,通常都有一个异常信息属性文件用于存放系统当中所有的异常信息
如: 更新失败
5. 需要有一种机制从属性文件当中读取异常信息
一种完整的异常处理机制需要有如下文件:
a) 异常信息属性文件 (key=value形式)
b) 读取异常信息的类
c) 可以将key 定义在一个类中,比如完全用数字标识的成员变量
d) 自定义异常的类
如: public class ErrorCode
{
public static int DELETE_ERROR = 1001;
}
这里以oa 为例 ,具体讲解异常处理步骤
首先 第一步 在项目中建立一个源代码目录,命名为errorMessage,在目录里建立一个
errorMessages.properties文件
在属性文件中可以这样写
1001 = 记录已被其他用户删除!
第二步 在项目中, 通常会有辅助包(比如:com.zgct.util),在其中创建一个类MessageHelper (贴
代码上来)
第三步 建立一个自定义异常处理包,如com.zgct.exception,在包中建立一个自定义异常类
EngineException(贴上来) ,继承Exception ,紧接着,在包中建立一个ErroCode 异常编号类.
第四步 从这里开始与实际应用相结合,
a) 比如 在DocumentCatalogDAOImpl类, 有一个删除文档目录方法,应修改为
public void deleteDocumentCatalog(Long id) throws EngineException
{
try
{
//先根据 id 查询相应的目录
DocumentCatalog dc = (DocumentCatalog)this.getHibernateTemplate(). get(DocumentCatalog.class, id);
//然后删除该目录
this.getHibernateTemplate().delete(dc);
}catch(Exception ex)
{
throw new EngineException(ErrorCode.DELETE_ERROR);
}
}
此时,也应修改它所实现的接口DocumentCatalogDAO的方法
如下: public void deleteDocumentCatalog(Long id) throws EngineException;
b) 如果有对应的service和service.impl包,则相应DocumentCatalogService和
DocumentCatalogServiceImpl所作修改与DAO,DAOImpl文件是相同的
c) 现在到了action包
第五步 在具有删除文档目录的jsp页面中,