<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Enterprise Library Step By Step系列(十一):異常處理應用程序塊——入門篇

       Enterprise Library Step By Step系列(十一):異常處理應用程序塊——入門篇

      作者:Terrylee

      一.概述

      使開發人員和決策人員能夠針對發生在企業應用程序體系結構層的異常處理創建一致的策略。它的實現方法如下:

      1)它支持整個應用程序體系結構層的異常處理,而不僅限于服務接口的界限。

      2)它使得異常處理策略可以在管理層定義和維護,以便決策人員(可能是系統管理員和開發人員)可以定義如何處理異常。他們可以維護和修改控制異常處理的規則集,而無需更改塊的應用程序代碼。

      3)它提供了常用的異常處理功能,例如記錄異常信息的功能、通過將原始異常替換為其他異常來隱藏敏感信息的功能,以及通過將原始異常打包到另一個異常中來添加異常的上下文信息的功能。這些功能封裝在名為 Exception handlers .NET 類中。

      4)它可以合并多個異常處理程序以產生某個異常所需的響應,例如先記錄異常信息,再將原始異常替換為其他異常。

      5)它使開發人員能夠創建自己的異常處理程序。

      6)它以一致的方式調用異常處理程序。這意味著,處理程序可以在應用程序之中和之間的多種場合下使用。

      常見情況

      異常處理應用程序塊被設計為支持包含在應用程序組件的 catch 語句中的典型代碼。該應用程序塊允許開發人員將此邏輯封裝為可重用的異常處理程序,而不是在應用程序組件的相同 catch 塊中重復這段代碼(例如,記錄異常信息)。異常處理程序是封裝異常處理邏輯和實現名為 IExceptionHandler 的異常處理應用程序塊接口的 .NET 類。異常處理應用程序塊包含三個異常處理程序:

      包裝處理程序:此異常處理程序可將一個異常包裝到另一個異常中。

      替換處理程序:此異常處理程序可將一個異常替換為另一個異常。

      日志處理程序:此異常處理程序可格式化異常信息,例如消息和堆棧跟蹤等。然后,日志處理程序將該信息提供給企業程序庫日志和規范應用程序塊,以便可以將它發布。

      異常處理應用程序塊可讓您將異常類型與指定的策略相關聯。您可以使用配置控制臺來完成此項工作。策略可指定在應用程序塊處理特定異常類型時執行的異常處理程序。您可以將這些處理程序串聯起來,這樣,在處理關聯的異常類型時就可以執行一系列處理程序

      二.幾個重要的概念

      1.策略:

      確定一系列的異常類型是如何攔截并處理的

      每一個策略可以包含多個異常類型

      每個應用程序支持多個異常策略

      2.異常類型:

      可以使用Exception功能的異常類型應該是一個System.Exception類型或從此類繼承下來的類

      每一個異常類型可以包含一個或多個Handler

      每一個異常均可以通過映射到.NET中的特定類型,從而被處理

      3.處理器:

      異常捕獲后進行處理的方式有日志,包裝,替換等;

      每一個異常類型可以有多個異常處理器;

      每一個異常捕獲處理器均有機會修改原有異常;

      每一個異常捕獲處理器均有機會將自己的信息通過異常傳遞給下一個異常處理程序;

      三.編寫示例程序:

      1.在開始進行配置之前,我們先編寫一個異常包裝的類。

       1using System;
       2using System.Runtime.Serialization;
       3
       4namespace EnterpriseExceptionHandler
       5{
       6    /// <summary>
       7    /// 功能說明:創建一個包裝異常的類,需要繼承ApplicationException
       8    /// 程序作者:Terrylee
       9    /// 編寫日期:2005年11月13日
      10    /// </summary>

      11    public class ExceptionHelper:ApplicationException
      12    {
      13        /// <summary>
      14        /// 默認的構造函數
      15        /// </summary>

      16        public ExceptionHelper() : base() 
      17        {
      18
      19        }

      20
      21        /// <summary>
      22        /// 序列化錯誤信息
      23        /// </summary>
      24        /// <param name="message">錯誤信息</param>

      25        public ExceptionHelper(string message) : base(message) 
      26        {
      27
      28        }

      29
      30        /// <summary>
      31        /// 序列化錯誤信息,內部異常產生的原因.
      32        /// </summary>
      33        /// <param name="message">錯誤信息</param>
      34        /// <param name="exception">引起當前的異常</param>

      35        public ExceptionHelper(string message, Exception exception) : base(message, exception) 
      36        {
      37
      38        }

      39
      40        /// <summary>
      41        /// 序列化數據
      42        /// </summary>
      43        /// <param name="info">序列化的數據對象</param>
      44        /// <param name="context">描述.</param>

      45        protected ExceptionHelper(SerializationInfo info, StreamingContext context) :base(info, context) 
      46        {
      47
      48        }

      49    }

      50}

      51

      2.打開配置工具,創建一個異常應用程序塊。

       

      3.創建一個策略。

       

      4.命名為Wrap Policy

       

      5.創建一個異常類型Exception

       

      6.創建一個異常處理器,命名為Wrap Handler,選擇它的WrapExceptionTypeName為我們剛才創建的那個異常包裝類。

       

      7.同樣,再創建一個替換策略和日志策略,分別命名為Replace PolicyLog Policy,注意Log Policy依賴于日志和監測應用程序塊。

      8.拷貝目錄(我每次都說,大家可能會覺著煩^_^,不過我自己總是忘了這一條,所以不得不每次提醒大家)。

      copy "$(ProjectDir)\*.config" "$(TargetDir)" > Nul

      9.在程序中編寫代碼(代碼編寫很簡單)。

       1/// <summary>
       2        /// 包裝策略
       3        /// </summary>
       4        /// <param name="sender"></param>
       5        /// <param name="e"></param>

       6        private void btn_Wrap_Click(object sender, System.EventArgs e)
       7        {
       8            try
       9            {
      10                Exception ex = new Exception();
      11                throw ex;
      12            }

      13            catch(DllNotFoundException ex)
      14            {
      15                bool Flag = ExceptionPolicy.HandleException(ex,"Wrap Policy");
      16
      17                if(Flag)
      18                {
      19                    throw;
      20                }

      21            }

      22            ///我們可以多次捕獲異常
      23            catch(Exception ex)
      24            {
      25                bool Flag = ExceptionPolicy.HandleException(ex,"Wrap Policy");
      26
      27                if(Flag)
      28                {
      29                    throw;
      30                }

      31            }

      32        }

      33        
      34        /// <summary>
      35        /// 替換策略
      36        /// </summary>
      37        /// <param name="sender"></param>
      38        /// <param name="e"></param>

      39        private void btn_Replace_Click(object sender, System.EventArgs e)
      40        {
      41            try
      42            {
      43                Exception ex = new Exception();
      44                throw ex;
      45            }

      46            catch(Exception ex)
      47            {
      48                bool Flag = ExceptionPolicy.HandleException(ex,"Replace Policy");
      49
      50                if(Flag)
      51                {
      52                    throw;
      53                }

      54            }

      55        }

      56        
      57        /// <summary>
      58        /// 日志策略
      59        /// </summary>
      60        /// <param name="sender"></param>
      61        /// <param name="e"></param>

      62        private void btn_Log_Click(object sender, System.EventArgs e)
      63        {
      64            try
      65            {
      66                Exception ex = new Exception();
      67                throw ex;
      68            }

      69            catch(Exception ex)
      70            {
      71                bool Flag = ExceptionPolicy.HandleException(ex,"Log Policy");
      72
      73                if(Flag)
      74                {
      75                    throw;
      76                }

      77            }

      78        }

      10.執行程序,單擊日志策略。在事件查看器中查看相應的日志記錄。

      結束語:異常處理應用程序塊相對于其他應用程序塊來說是比較簡單的,入門篇里就介紹這么多了J

      posted @ 2005-11-14 09:29  TerryLee  閱讀(11746)  評論(19)    收藏  舉報
      主站蜘蛛池模板: 国产农村乱人伦精品视频| 老熟妇国产一区二区三区 | 久久成人 久久鬼色| 怡红院一区二区三区在线| 久久av中文字幕资源网| bt天堂新版中文在线| 台北市| 国99久9在线 | 免费| 日韩人妻熟女中文字幕a美景之屋| 国产精品美腿一区在线看| 在线观看无码av五月花| 色欲AV无码一区二区人妻| 精品亚洲综合一区二区三区| 免费无码毛片一区二三区| 一区二区中文字幕久久| 里番全彩爆乳女教师| 开心一区二区三区激情| 亚洲色一区二区三区四区| 国精偷拍一区二区三区| 免费观看国产女人高潮视频 | 紫金县| 国99久9在线 | 免费| 精品国产迷系列在线观看| 色一情一乱一区二区三区码| AV最新高清无码专区| 国产成人亚洲综合图区| 欧美日韩在线视频| 日本黄页网站免费观看| 中文字幕人妻精品在线| 国产麻豆一精品一av一免费| 8av国产精品爽爽ⅴa在线观看| www插插插无码免费视频网站 | 国产人成精品一区二区三| 免费无码av片在线观看播放| 亚洲国产成人无码影院| 性男女做视频观看网站| 亚洲av色夜色精品一区| 婷婷六月天在线| 免费AV片在线观看网址| 国产av一区二区午夜福利| 国产精品无码专区|