Enterprise Library 2.0 中的 Exception Handing Applcation Block 為我們開發人員以及設計人員提供了一個一致的方法去處理我們整個企業級應用程序的每個層次上的異常,表現在以下幾個方面:
1、它為應用程序的架構的每個層提供異常處理方法,並不僅僅局限於服務層接口;
2、提供通用的異常處理方法,比如記錄異常信息,使用我們自定義的異常信息來替換系統的異常信息等等;
3、我們可以自己定義異常處理的規則,並且可以不通過修改代碼來修改異常處理的規則;
4、它支持我們開發者自己創建自己的異常處理方法;
5、通過同樣的方法來調用異常處理方法,這使得異常處理可以用於應用程序的任何地方。
我們在進行異常處理時,一般采用一下策略:
1、包裝
2、替換
3、日志
那麼,Exception Handing Application Block 究竟能給我們得開發帶來哪些好處呢?先看下面的代碼:
DataSet customersDataSet;
try
{
customersDataSet = RunQuery("GetAllCustomers");
}
catch(Exception ex)
{
string formattedInfo = FormatException(ex);
Logging.Log(formattedInfo);
throw new DataAccessException("Database access failure for query GetAllCustomers",e);
}
上面的代碼估計我們最熟悉不過了,不錯,在我們的應用程序中這樣的代碼估計會貫穿我們的程序中的每一個角落,但是當我們處理異常的方法發生改變了的時候,我們就要對所有的代碼進行修改,這是一件很郁悶的事情,Exception Handing Application Block的出現就為我們解決了這樣的麻煩,使用Exception Handing Application Block後,我們只需要修改配置文件就可以改變應用程序中的所有異常處理方法。如下:
DataSet customersDataSet;
try
{
customersDataSet = RunQuery("GetAllCustomers");
}
catch(Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "Data Access Policy");
if (rethrow)
throw;
}