天天看點

項目中異常的處理

異常的處理,  要關注的幾點

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

繼續閱讀