企业库异常处理块(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。

.NET 2.0中的企业库异常处理块相关推荐

  1. java dotnet core_在.NET Core 2.0中使用Omron库

    我正在尝试在ASP.NET Core 2.0应用程序中使用Omron库(即Compolet) . 我为这些类添加了程序集引用,但在运行时,它们尝试找到 System.Windows.Forms 程序集 ...

  2. VC6.0中创建和使用静态库

    一:在VC6.0中创建静态库 1, 新建一个win32 static library工程,默认"OK",然后点击"finish"即可: 2, 在此工程中添加.c ...

  3. 企业库(V4.1)入门学习手记

    企业库整体概览 引用 Alex Homer 的企业库开发指导中的企业库组建依赖关系图图: 使用企业库配置编辑工具: A)数据访问(Data Access) 1)配置文件 在配置文件中(App.conf ...

  4. 微软企业库4.1学习笔记(八)创建对象 续集2

    3.3通过配置指定和Unity的整合 另外一种方法是在配置源中指定配置的需要,你可以指定下面的一条或者多条: 你可以在Unity配置中指定想要的BlockExtensions 你可以在Unity配置中 ...

  5. VC++6.0中使用GDI+绘图(转载)

    VC++6.0中使用GDI+绘图 1.在VC++6.0中配置GDI+环境 1.1 下载GDI+库 VC++6.0中没有GDI+库.可以从http://www.crazy-bit.com/downloa ...

  6. [EntLib]微软企业库5.0 学习之路——第五步、介绍EntLib.Validation模块信息、验证器的实现层级及内置的各种验证器的使用方法——上篇...

    本文是为后面的学习之路做铺垫,简单介绍下企业库中的Validation模块的一些相关知识,包括Validation模块的简介.用途.使用方法.默认提供的多种验证器的介绍等. 一.简介及用途 在实际的项 ...

  7. [EntLib]微软企业库5.0 学习之路——第七步、Cryptographer加密模块简单分析、自定义加密接口及使用—上篇...

    在完成了后,今天开始介绍企业库中的新模块:Cryptographer(加密模块),这个模块在日常的大多数项目的作用非常重要,例如:网站会员密码.身份证号.网站配置等,通过对信息进行加密可以保证项目数据 ...

  8. (转)[EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART2——了解Unity的使用方法(1)...

    原文地址:http://www.cnblogs.com/kyo-yo/archive/2010/11/01/Learning-EntLib-Tenth-Decoupling-Your-System-U ...

  9. [EntLib]微软企业库5.0 学习之路——第十步、使用Unity解耦你的系统—PART5——使用Unity自身的拦截器...

    在前一篇文章中,介绍了如何使用Unity来接管PIAB进行拦截操作,而Unity自身也提供了类似于ICallHandler的拦截处理程序--IInterceptionBehavior,今天这篇文章就是 ...

  10. 微软企业库5.0学习笔记(三十三)数据访问模块

    前言 鉴于企业库5.0已经发布正式版,同时有广大读者的要求(臭屁一下,o(∩_∩)o...),后面文章的内容和代码将基于Enterprise Library5.0和Unity2.0来写,感谢大家的一贯 ...

最新文章

  1. Pots(poj-3414)bfs+输出路径
  2. 无法访问linux mysql_远程无法访问linux Mysql解决方案(转)
  3. ZAM 3D入门教程(3):Viewport
  4. js for循环_JS 函数的执行时机(深入理解6个6)
  5. java web svn_如何搭建svnadmin,一个简单的svnWEB页面
  6. 7种方法让你养出干净的肺
  7. 论文浅尝 | 基于事理图谱的脚本事件预测
  8. 模拟退火算法_Matlab 二维模拟退火算法最优路径(主程序)
  9. jquery下插入标签以及clone的应用
  10. Python 线程 进程 协程
  11. android 5.0论坛,Android 安卓5.0以下版本提权漏洞
  12. [转贴]RUP与XP的平衡之道
  13. 超能竞速大开眼界,iQOO 5系列正式发布
  14. 推荐一款文献管理工具 Zotero |附使用教程和学习路径
  15. const char* std::string CString 之间的转换
  16. TextView 悬挂缩进实现及解析
  17. hexo网页相册页面的制作
  18. 2011大纽约区域赛试题 Decoding EDSAC Data 解题报告
  19. 大数据人工智能实验室-大数据培训方案
  20. 手机投屏不是全屏怎么办_手机、电脑投屏怎么全屏

热门文章

  1. BABOK - BA计划和监控(BA Planning Monitoring)概要
  2. sql server安装
  3. Oracle 10G R2 让表常驻内存
  4. Flex4的皮肤skin
  5. 了解一个百万级 PHP 网站的架构
  6. 如何创建和使用文档库 - [MOSS 2007应用日记]
  7. 科研绘图神器之Plotluck(如何节省时间)
  8. 精选| 2019年5月R新包推荐(Top40)
  9. 一元(多元)线性回归分析之R语言实现
  10. P1352 没有上司的舞会[树形dp]