使用企業庫異常處理應用程式子產品的優勢:
它支援整個應用程式體系結構層的異常處理,而不僅限于服務接口的界限。
它使得異常處理政策可以在管理層定義和維護,以便決策人員(可能是系統管理者和開發人員)可以定義如何處理異常。他們可以維護和修改控制異常處理的規則集,而無需更改塊的應用程式代碼。
它提供了常用的異常處理功能,例如記錄異常資訊的功能、通過将原始異常替換為其他異常來隐藏敏感資訊的功能,以及通過将原始異常打包到另一個異常中來添加異常的上下文資訊的功能。這些功能封裝在名為Exception handlers 的 .NET 類中。
它可以合并多個異常處理程式以産生某個異常所需的響應,例如先記錄異常資訊,再将原始異常替換為其他異常。
它使開發人員能夠建立自己的異常處理程式。
它以一緻的方式調用異常處理程式。這意味着,處理程式可以在應用程式之中和之間的多種場合下使用。
下面我們來試試看用EL5.0的異常處理子產品到底能做些什麼,按需求來做分析是最好的辦法,那我們可以模拟的提出下列幾個需求,看看用異常處理子產品如何靈活的解決它們:
1. 希望能過濾程式中某些異常,即在發生這些異常的時候不會被抛出.要求是配置簡單,隻用修改一處地方就能控制所有相應的異常.
2. 發生某種異常的時候被自動替換成另外一個異常
3. 發生某種異常的時候被自動包裝到另外一個異常中
4. 發生某種異常的時候被自動記錄在指定的日志記錄政策中,可以是記錄到資料庫或者檔案中.
下面介紹如何使用Microsoft Enterprise Library 5.0中的異常處理程式子產品來處理上面的問題:
1. 運作EntLibConfig.exe, 選擇Blocks菜單 ,單擊 Add Exception Handling Settings .
2. 為了模拟第一個問題,我們要先删除原有的All Exceptions,因為它表示所有的異常均截取,我們删除了它,再在Policy面闆上右鍵—Add Exception Type,在彈出的異常類型選擇視窗中,我們選擇一個異常System.FormatException:
3. 點選 File菜單,單擊 Save,儲存為一個App.config檔案,可以先儲存到桌面,之後要用到它.
4. 建立一個新的控制台應用程式,将App.config添加到程式内,并加入需要的Dll檔案,并添加需要的引用:
添加引用:
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling;
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration;
using Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Configuration;
測試:
代碼
運作結果:
到此為止,我們已經解決了第一個問題,當你的程式想隻過濾System.FormatException異常的時候,可以用上面的方法實作,如果想過濾其他的異常,隻用在EL5中添加即可,無需更改程式中的任何代碼.
5. 下面我們來解決第二個問題,讓我們回到EL5.0,在Policy面闆上右鍵—Add Exception Type,在彈出的異常類型選擇視窗中,我們選擇一個異常System.IO.FileNotFoundException,再在FileNotFoundException面闆上右鍵—Add Handlers—Add Replace Handler,在建立好的Replace Handler面闆中點選Replace Exception Type右邊的…按鈕,選擇要替換成的異常類型,我們選擇:System.TimeputException:
6. Save一下,更新App.config檔案,修改源程式如下:
7. 運作結果:
到此為止我們便解決了第二個問題,是不是很簡單呀,這就是EL的便利之處~
8. 接着處理第三個問題,回到EL,在Policy面闆上右鍵—Add Exception Type,在彈出的異常類型選擇視窗中,我們選擇一個異常System. NullReferenceException,再在NullReferenceException面闆上右鍵—Add Handlers—Add Wrap Handler,在建立好的Wrap Handler面闆中點選Wrap Exception Type右邊的…按鈕,選擇要替換成的異常類型,我們選擇: System.ApplicationException:
9. Save一下,更新App.config檔案,修改源程式如下:
10. 運作結果:
到此為止,我們又解決了第三個問題.
12. Save一下,更新App.config檔案,修改源程式如下:
13. 運作結果:
打開工程目錄下的rolling.log檔案:
OK,到此為止,我們将四個問題都解決了.
本文轉自黃聰部落格園部落格,原文連結:http://www.cnblogs.com/huangcong/archive/2010/06/04/1751087.html如需轉載請自行聯系原作者