天天看點

.NET 2.0中的企業庫異常處理塊

  企業庫異常處理塊(Enterprise Library Exception Handling Block)提供了處理異常所需的所有基本代碼,現在,你可以不用再編寫這些重複性的異常處理代碼,隻需簡單地在程式中使用它們,就可保證一緻且高效地異常處理。 在一個理想的程式世界中,編寫的所有代碼都是運作無誤的,但現實是,無論你在編寫代碼時多麼地小心,錯誤總會發生,是以,必須要有一個高效、可配置的架構(framework),以一種“優雅”方式來處理錯誤;另外,也必須要懂得,人們通常以對程式的使用者體驗帶來多大影響,來衡量一種異常處理的有效性。是以,一個好的異常處了解決方案不單是從使用者的觀點“優雅”地處理錯誤,而且還可通過開發者或系統管理者以可配置的錯誤處理行為,提供健壯的配置設定,這也是異常處理塊的關鍵組成部分。 與Enterprise Library 2.0一同到來的是嶄新的異常處理應用程式塊,自從老的異常管理應用程式塊釋出以來,其經過了巨大的改進,可從MSDN下載下傳EntLib Caching Block獲得。為有效地使用,你必須接受以下三個主要觀點: Ø 異常處理是在你的代碼探測到有異常發生時,處理異常的一個過程。 Ø 異常日志記錄是記錄一個異常的過程,其包括發送格式化異常到事件記錄器或發送一封E-mail,而異常處理塊則利用了日志記錄和事件記錄。 Ø 異常處理政策允許你控制異常處理和使用外部配置檔案記錄的行為,這樣就的好處是,現在不用在代碼中實施這樣的規則了,換句話來說,你可在一個政策檔案中定義異常處理,然後,在不改變代碼的情況下,在測試、調試、産品定型期間修改行為以适應不同的異常處理需要。 另外,使用異常處理塊,在探測到異常時,可做以下三件事情: Ø 你可把異常包裝為一個新的異常,并加入新的上下文資訊或錯誤詳細資訊。當新的異常傳遞到調用堆棧時,仍可通過InnerException屬性通路到原始的異常。 Ø 你可用一個新的異常取代原有異常。一般來說,這樣做的目的,是不想讓原始異常的詳細資訊傳遞出程式。 Ø 你可以記錄異常。當然,也可結合使用包裝或取代的方法來達到此目的,或者,你可以記錄原始異常并把它傳遞到調用堆棧。 使用異常處理塊 在安裝完企業庫(Enterprise Library)之後,就可利用異常處理塊開始編寫代碼了,為正确使用異常處理塊,請遵循以下步驟: 1、 在你的解決方案中分别添加一個對Microsoft.Practices.EnterpriseLibrary.Common.dll和Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll程式集的引用,可使用“添加引用”選項,并定位到X:/Program Files/Microsoft Enterprise Library January 2006/bin檔案夾,如果還想使用異常處理日志記錄,請再添加一個對Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll的引用。 2、 像如下所示,在根下的中添加必要的項目到你的app.config(Windows Forms)或web.config(ASP.NET程式)檔案。 name="exceptionHandling" type="Microsoft.Practices. EnterpriseLibrary. ExceptionHandling. Configuration. ExceptionHandlingSettings, Microsoft.Practices. EnterpriseLibrary. ExceptionHandling" /> 3、 如果随同異常處理一塊使用日志記錄,還需要在中加入以下設定。 name="loggingConfiguration" type="Microsoft.Practices. EnterpriseLibrary.Logging. Configuration.LoggingSettings, Microsoft.Practices. EnterpriseLibrary.Logging" /> 4、 接下來,直接在下添加,在之内,你可添加所有的異常處理政策,以下的代碼,表示在中指定了一個名為“Global Policy”的政策。 type="System.Exception, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" postHandlingAction="None"> type="ExceptionMgmtBlockExample. AppMessageExceptionHandler, ExceptionMgmtBlockExample"/> 上述的設定指定了處理所有異常的一個政策。另外,使用項,你可指定一個自定義的異常處理方法,其将以适當的方式處理異常。在這個例子中,自定義異常處理方法實作為一個名為AppMessageExceptionHandler的類,而在本文的後面部分,将會看到AppMessageExceptionHandler類具體的實作。屬性postHandlingAction指定了處理基于政策的異常的行為,此屬性可接受以下值:None、NotifyRethrow、ThrowNewException。

本文轉自yonghu86 51CTO部落格,原文連結:http://blog.51cto.com/yonghu/1321474,如需轉載請自行聯系原作者

繼續閱讀