天天看点

项目中异常的处理

异常的处理,  要关注的几点

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页面中,