返回首页

简介
异常处理应用程序块。由Microsoft提供一个标准的框架,而不是不治本的方法纳入您的应用程序异常处理应用程序块。本文总结了相同的基本概念和用法。

概念异常处理过程异常的东西时,异常是由您的代码
检测
异常日志
记录异常的过程,其中可能包括发送格式化异常事件日志或发送电子邮件

异常政策
允许你控制异常处理和日志记录到您的代码中使用外部配置文件,而不是烘烤等规则的行为
使用异常处理块
3事情可以做,当你发现一个异常:
你可以用在一个新的异常的异常,添加新的上下文信息或细节。原始的异常仍然可以通过InnerException属性时,新的异常传播到调用堆栈。

您可以用一个新的异常异常。这样做时,你不想原始异常的详细信息,跨应用程序边界传播。

您可以登录异常。您可以在组合包装或更换异常,或者您可以登录原始的异常并调用堆栈向上传播原有的或新的异常。
编码待办事项:
添加引用:


Microsoft.Practices.EnterpriseLibrary.Common.dll

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.dll

Microsoft.Practices.EnterpriseLibrary.ExceptionHandling.Logging.dll

新增配​​置项的app.config低于LT; configSectionsgt;根LT下configurationgt;;元素的元素:{C}用于记录,LT; configSectionsgt;元素添加以下几节:

<section 

name=锟loggingConfiguration锟?type=锟Microsoft.Practices.EnterpriseLibrary.Logging.Configuration.LoggingSettings,

 Microsoft.Practices.EnterpriseLibrary.Logging锟?/>

添加LT; exceptionHandlinggt;直接下的根元素LT元素; configurationgt,你在里面添加例外政策:

<exceptionHandling>

  <exceptionPolicies>

     // Add policy name: see ppt for code sample

        <exceptionTypes>

      // Add exception type: see ppt for code sample

          <exceptionHandlers>

        // Add handlers: see ppt for code sample

          </exceptionHandlers>

            // Close add tag: 

        </exceptionTypes>

     // Close add tag: 

  </exceptionPolicies>

</exceptionHandling>

或者,您可以添加元素容易使用Enterprise Library配置工具(Visual Studio 2005中的一部分),如下所示:{S0}

导入命名空间异常处理块Microsoft.P​​ractices.EnterpriseLibrary.ExceptionHandling在您的项目中,对上述命名空间中的类编写代码。使用ExceptionPolicy类概述类暴露了一个静态方法:HandleException(),让客户端应用程序进行交互的异常处理块

。您作为一个参数供应政策; HandleException方法使用一个工厂来创建对象类型提供政策ExceptionPolicyImpl;这个对象有一个ExceptionPolicyEntry对象的集合命名的策略配置文件中指定的每个异常类型的一个对象;??每个ExceptionPolicyEntry异常类型,包含实现的IExceptionHandler接口的对象的集合;有序集合,并提供异常处理块使用在执行政策时的顺序,其中的每个对象有相关的配置信息,具体到每种类型的处理程序。例如:
按钮单击事件处理程序与简单的异常处理(C#)的例子

private void btn_Click(object sender, EventArgs e)

{

    try

    {

        throw new Exception(锟This is a test exception锟?;

    }

    catch (Exception ex)

    {

        bool rethrow = ExceptionPolicy.HandleException(ex, 锟Global Policy锟?;

        if(rethrow)

        {

            throw;

        }

    }

}

日志按钮单击事件处理程序示例(C#)

// The catch block invokes ExceptionPolicy.HandleException method by passing the exception object (ex) 

// as well as the policy (锟Log Only Policy锟? as arguments

private void btn_Click(object sender, EventArgs e)

{

    try

    {

        throw new Exception(锟This is a test exception锟?;

    }

    catch (Exception ex)

    {

        bool rethrow = ExceptionPolicy.HandleException(ex, 锟Log Only Policy锟?;

        if(rethrow)

        {

            throw;

        }

    }

}

样本记录的app.config配置信息显示在所附的PPT。参考文献... ...{A}{A2}

回答

评论会员:stodgey 时间:2011/12/07
本文comlpicates异常处理应用程序块的过程中,微软已经处理相当不错... ...

更有帮助的做法将是一个教程,使用Enterprise Library配置工具,而不是编辑原始XML文件(在我看来) - 这是因为微软不提供了极大的教程(我所见过反正)

对于刚刚起步的你,请跳过这篇文章。对于那些更有经验,本文将不提供任何新的东西
评论会员:。玛纳斯玛尼特里帕蒂 时间:2011/12/07
PLZ没有新的蜜蜂一看
评论会员:标记Nischalke 时间:2011/12/07
你需要进行更多的研究这篇文章,因为它缺少了很大一部分,如创建例外政策和记录,这将使其更加有用。

从本质上讲,与EntLib提供的文件是一个更好的资源。本文不添加任何东西,实际上可能会比好处多有害的,因为它缺乏必要的信息。

作为资产只有两个字母远离
评论会员:COMKING 时间:2011/12/07
是啊,couldnt同意。
评论会员:马克Nischalke 时间:2011/12/07
异常处理块Microsoft.P​​ractices.EnterpriseLibrary.ExceptionHandling在你的项目导入命名空间,对上述命名空间中的类编写代码。

您还需要包括ObjectBuilder.dll和Common.dll。记录可能还需要加以引用,如果异常政策包括它。
只有两个字母远离资产的
评论会员:noemailz 时间:2011/12/07
添加它,在一个Web asp.net应用,或把链接例如