.net 异常系统实现(一 描述)

EAS系统异常子系统(问题描述)

一、     使用异常系统的目的:

1、              将错误信息隐藏,防止代码层次的错误描述暴露给用户。

2、              增强系统健壮性,防止出现局部错误引起模块、系统崩溃。

3、              便于部署后的调试,记录异常信息到文件、数据库,定时回馈或集中处理。

二、     常见异常:

1、 编程时粗心考虑不周,测试时不完全。

2、 函数调用顺序以及调用方式引起的对象引用为空。

3、 资源无效,如数据库连接异常、文件不存在。

4、 调用C#系统函数,第三方代码产生的异常。

5、 系统异常(C#定义的运行时异常)。

三、          解决异常的方式:

1、 进行单元测试,查找遗漏捕获异常的位置。

2、 代码层次使用Try ParseTestDo方式尽量减少异常。

3、 对系统异常,C#类库异常进行封装处理,使用自己的异常系统。

4、 底层函数,只要涉及资源使用,评估产生异常的方式,对异常进行详细描述。

四、     EAS系统中的异常处理现状

1、 Client层异常处理基本实现(分散,不统一),大多与验证相关,Common层出现的问题在此层捕获,大多使用通用捕获显示捕获的信息,具体异常类型不清楚。

2、 Common层基本未使用异常处理,捕获异常的位置混乱。有在底层代码捕获的异常,有在中间调用过程中捕获的异常,有层层嵌套异常现象,对异常处理不统一。

3、 对异常的记录不完善。记录方式值得讨论。

4、 安全控制引发的异常。

5、 异常记录更日志系统界定范围不清晰,重合的地方如何处理。

6、 对异常信息的保护。

五、     EAS系统中异常处理系统框架:

1、 描述:

1)对模块进行编码,便于分类处理异常。

2)对模块三层类中各类进行编码,类中函数进行编码。

3DAO(数据访问对象)对数据库查询进行异常捕获、封装、添加模块信息。

4)控制类对象详细捕获异常,封装系统、C#类库、其他类异常。

5)边界类(窗体对象),捕获控制类函数封装好的异常,选择以友好的方式,显示异常(只显示不可忽视的异常)。

6)部分异常需要回滚或重新执行。

       2、异常系统结构

              1)域模型:

      

             

     2)异常捕获处理过程:

              3)与日志系统的衔接。

六、     异常处理系统带来的问题:

1、 模块、类、函数编码体系庞大,需要文档支持(是否实现讨论)

2、 代码添加影响面广,对函数粒度是否应该捕获异常,需进一步细化。

3、 日志系统需要同时进行。

4、 Client层的提示信息,各模块各窗口要细化,统一。

5、 具体实现,要在时间、效率、性能各方面权衡。

七、     总结

EAS异常处理系统在真正部署前必须实现,用以解决程序稳定性、可调试性等问题。解决方案已经初步形成,在项目组讨论后继续深化,并在实现代码的过程中进一步更正。

原文地址:https://www.cnblogs.com/zaohe/p/1654051.html