.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,如需转载请自行联系原作者

相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
一个.NET开源、轻量级的运行耗时统计库 - MethodTimer
221 3
|
8月前
|
API C++ Windows
Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法
本文介绍Visual C++运行库、.NET Framework和DirectX运行库的作用及常见问题解决方案,涵盖MSVCP140.dll丢失、0xc000007b错误等典型故障的修复方法,提供官方下载链接与系统修复工具使用指南。
1830 2
|
缓存 开发框架 .NET
一个功能丰富的 .NET 工具库 XiHan.Framework.Utils
XiHan.Framework.Utils 是一个功能全面的 .NET 工具库,包含字符串处理、集合扩展、加密解密、分布式 ID、文件操作、缓存、线程、国际化等模块。设计上注重高内聚、低耦合,适用于各类 .NET 应用开发。支持 AES 加密、树形结构转换、分页过滤、日志输出等功能,提供简单易用的 API。可通过 NuGet 快速安装,源码开放,采用 MIT 协议。
435 56
|
人工智能 自然语言处理 API
适用于 .NET 稳定的官方OpenAI库
适用于 .NET 稳定的官方OpenAI库
505 0
|
Go
在golang中发起http请求以获取访问域名的ip地址实例(使用net, httptrace库)
这只是追踪我们的行程的简单方法,不过希望你跟着探险家的脚步,即使是在互联网的隧道中,也可以找到你想去的地方。接下来就是你的探险之旅了,祝你好运!
644 26
|
人工智能 物联网 开发工具
.NET技术:多元语言、丰富库与跨平台能力引领软件开发新纪元。
`【7月更文挑战第4天】.NET技术:多元语言、丰富库与跨平台能力引领软件开发新纪元。从企业应用、云服务到游戏开发,其角色日益凸显。随着微软的持续创新与社区合作,未来.NET将在物联网、AI等领域拓宽应用,开发者应把握趋势,共创未来。`
449 0
|
传感器 人工智能 供应链
.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。
本文深入探讨了.NET开发技术在数字化时代的创新作用,从高效的开发环境、强大的性能表现、丰富的库和框架资源等方面揭示了其关键优势。通过企业级应用、Web应用及移动应用的创新案例,展示了.NET在各领域的广泛应用和巨大潜力。展望未来,.NET将与新兴技术深度融合,拓展跨平台开发,推动云原生应用发展,持续创新。
242 4
|
存储 消息中间件 NoSQL
Redis 入门 - C#.NET Core客户端库六种选择
Redis 入门 - C#.NET Core客户端库六种选择
1211 8
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
478 1
|
网络协议 Unix Linux
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
一个.NET开源、快速、低延迟的异步套接字服务器和客户端库
369 4