異常的處理, 要關注的幾點
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頁面中,