通用异常处理框架_第1页
通用异常处理框架_第2页
通用异常处理框架_第3页
通用异常处理框架_第4页
通用异常处理框架_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

通用异常处理框架 通用异常处理框架(转载)通用异常处理框架【摘要】 异常捕捉、处理是每个项目中必不可少的一部分,利用反射和XML配置技术实现一个通用的、灵活的、可配置的、高度可自扩展的异常处理框架对项目的整体健壮性以及异常处理效率都是非常重要的。通用异常处理框架中需要提供配置信息的支持以及统一的异常处理类和异常日志记录类管理,并允许用户以插件形式扩展自定义的异常处理或日志记录方式。一、 问题的提出由于异常处理在项目中的普遍性,我们会很自然的想到是否可以对异常处理模块进行提取为公用模块,加强项目间的复用,提高项目的开发进度。并且在异常处理中,因为没有良好的异常处理系统可能造成一些问题:l 若异常处理方式不当,容易造成比较严重的性能问题。l 在项目开发阶段,开发人员需要得到完整的异常错误信息方便分析BUG;在项目发布阶段,用户希望看到的是比较友好的错误信息。一个良好的异常处理系统应能够通过简单的配置方便的达到这样的效果l 异常处理系统应该能够提供足够的信息方便开发人员对BUG异常的准确定位,减少查找BUG产生原因的时间。(该问题在自己的项目中有过深刻教训:因项目中异常信息的不准确,导致一个BUG消耗大量人力时间)l 一个项目中各层对异常处理的方式不同,可能会不同的层编写不同的代码,造成代码使用麻烦以及复用性低,若需修改,可能改动较大。(例如PDM项目中,除UI层外,都是对异常进行包装后抛给上一层捕捉;而UI层需要处理记录异常,并反馈给用户;即便是UI层也应WebUI和WinUI采用的不同的方式实现,提供给项目的接口也都有一定区别,增加了编码的复杂程度)l 异常报告信息没有统一管理。很多项目中报告给用户的错误消息,都是程序员在开发中自己编写的,对用户而言,常常不是有效的友好的提示信息。集中管理后可以由BA来进行错误信息的整理,改善用户体验。l 异常记录方式可能会在不同环境有不同的处理,应该能通过配置文件简单的实现,而不必每次为不同的应用编写代码。l 要把异常系统做成一个通用的框架,存在一个比较大的挑战:不同的项目可能因项目的整体构架不同,对异常处理方式会有不同的需求,如何保持通用异常处理框架的灵活性的同时实现复用以及可配置性。二、解决思路为了最大程度实现异常处理框架的通用性、可扩展性以及可配置性,采用配置文件结合动态加载插件的方式:框架提供接口,由不同项目根据自己的需要实现接口,完成对异常的处理,以及异常日志的记录;而框架再根据配置信息决定异常处理在不同的情况下的处理策略,并通过调用用户实现的接口来完成异常处理过程。整个异常处理过程对项目调用高度封装,项目中不论任何地方,只需调用一个唯一的接口,框架就会根据配置信息执行需要的异常处理。三、实践情况整体结构框架主要由ExManagement.Config、ExManagement.Interface、ExManagement.MessageHandler以及ExManagement构成。如图:三-1 u ExManagement.Config:用于从配置文件中获取配置信息,并将配置信息转换为一个配置信息实体对象,提供给框架的其他部分使用。u ExManagement.Interface:提供异常处理类、异常日志记录类以及异常错误报告类的接口和基类,便于用户在框架的基础上进行自定义的扩展u ExManagement.MessageHandler:对ExManagement.Interface中的IMessage接口实现,提供了WebUI和WinUI下的弹出错误信息提示的支持。也可以直接编写一个满足IMessage接口的包,以自己需要的方式弹出错误提示信息。u ExManagement:是控制和管理框架按照配置信息进行处理的控制类。首先根据异常处理配置加载需要的异常处理类和日志记录类,再按照配置信息内容对异常进行处理。并提供唯一的接口供项目调用。u ExManagement.Handler:默认的异常处理包,包含了一种对异常处理的具体实现。用户也可以继承ExManagement.Interface中的ExHandlerBase基类,实现自定义的异常处理类,并通过修改配置文件让框架调用。u ExManagement.LogHandler:默认日志记录包,包含一种将异常日志记录到数据库的具体实现。用户也可以实现ExManagement.Interface中的ILogHandler接口,实现自定义的异常处理类,并通过修改配置文件让框架调用。 图三-1ExManagement.Config包该包主要由两部分组成:实现System.Configuration.IConfigurationSectionHandler接口的ExSectionHandler类和配置信息实体类ExManagerConfig。如图三-2。 ExManagerConfig类中又定义了3个嵌入类:ExHandlerConfig、LogHandlerConfig、LogHandlerConfigCollection以及三个枚举ExAlertType、ErrorCodeSource、ExReturnMode。ExManagerConfig、ExHandlerConfig、LogHandlerConfig分别对应配置文件中的、节点。ExManagerConfig是一个集合类,从System.Collections.CollectionBase继承,包含若干个ExHandlerConfig对象,并通过索引器访问包含的ExHandlerConfig对象,支持以int和string两种方式索引。 ExHandlerConfig中除了包含对应节的属性外,还包含一个LogHandlerConfigCollection对象,是LogHandler类的集合类。图三-2 ExSectionHandler类从配置文件中按照固定的格式获取到相应的配置信息,并将信息填充到ExManagerConfig。 配置文件<configuration> <configSections> <section name=ExManager type=ExManagement.Config.ExSectionHandler, ExManagement.Config /> < SPAN>configSections> <ExManager ErrorCodeSource=XML/DB ConnectionString= DataTable=> <ExHandler Name= Type= ReturnMode= AlertType=WebUI/WinUI/None/> <ExHandler Name= Type= ReturnMode= AlertType=> <LogHandler Type= ConnectionString= Da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论