.net 异常系统实现(二 设计)

 

EAS系统异常设计

一、 系统中异常现状

1、 C#定义的异常

2、 框架使用异常

1) 通用异常

Exception类型

异常描述

CustomAppliactionException

框架自定义异常的基类

ClientApplicationException

框架自定义异常的基类

ServerApplicationException

服务器相关异常(未使用)

WrongImplementationException

未知

FilterNotFoundException

过滤器未发现异常(未使用)

结构

 

2) SQL异常

Exception类型

异常描述

给用户的提示

ConcurrencySqlException

并发异常

 

DBNotExistsException

数据库不存在异常

 

DuplicateKeySqlException

重复Key异常

 

ForeignKeyViolationSqlException

外键约束异常

 

GenericSqlException

一般的SQL异常

 

ProcedureNotExistsException

存储过程存在异常

 

ReadOnlySqlException

只读SQL异常

 

UniqueValueViolationSqlException

违反唯一约束异常

 

        异常结构:

             

二、异常设计

1)              Exception Handlers (异常处理器)

Wrap handler 包装继续抛出

Replace handler 替换

Logging handler 记录

2)              Exception Policies(处理策略

Base policy (基本策略):记录继续抛出原异常

Secure policy (安全策略):代替原有异常抛出新异常

Expressive policy :包装异常,抛出新异常

3)              处理机制

DataAccess层:记录并包装,抛出新异常,发生在两层之间

Bussiness层: 记录并继续抛出,本层内部

UI :替换显示信息给用户,两层之间

4)              确定异常策略及行为

5)              异常抛出策略

自动抛出:对异常不做处理,函数上层捕获异常

捕获处理,并继续抛出:进行恢复性工作,如果无法恢复,继续抛出

封装异常,抛出新异常:隐藏原异常信息

     

6)              异常提示:界面层次关键操作提示用户,隐藏程序信息

7)              异常捕获的几个原则

(1)      除非要在异常中添加附加信息,不要捕获。也就是说,如果在此处捕获异常对用户,对程序没有益处,不要捕获。

(2)      如果要重新执行,则捕获异常。同时隐藏原异常中的敏感的信息,格式化异常。

(3)      处理异常通常发生在应用程序边界,如层边界、用户界面边界、服务等。隐藏异常信息可以保护信息不被边界外获取。

(4)      不要在边界之间传输敏感信息,即使边界是可信任的。

(5)      尽可能的定义精确的异常,同事允许采取特定的操作。这需要自定义异常。

(6)      提供给用户的信息必须与异常密切相关,并提供正确的操作提示。同时信息中不应该包含敏感信息,包括栈的调用、服务器名等。

三、常见异常场景

1) Logging An Exception:异常策略的第一步,然后再执行后面的策略。

2) Wrap An Exception

3) Replace An Exception:发生在记录后,需要记录原异常的GUID

4) Propagating An Exception:

5) Displaying User-Friendly Message:

6) Notify The User:

7) Adding Support Staff:显示的异常跟日志记录的异常的定位

四、EAS系统异常设计

1) 设计目标:

(1)       压缩逻辑显示实现异常,使用最少的代码。

(2)       减轻处理异常的重复代码,使用通用处理。

(3)       保证异常策略发生改变后,程序能同时反应出改变。

(4)       符合微软提供的最佳实践《Exception Management Architecture Guide》。

转载于:https://www.cnblogs.com/zaohe/archive/2010/01/22/1654057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值