• .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》。

  • 相关阅读:
    ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(2)
    ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(1)
    ASP.NET MVC4.0+EF+LINQ+bui+bootstrap+网站+角色权限管理系统(开篇)
    时间文本框,入职时间,工龄的换算
    javascript中this的用法
    web的Tomcat8部署文档
    rabbitMQ集群安装部署
    Python实现统计Jenkins multibranch发布的分支及时间等 页面 … 部署文档 跳到banner的尾部 回到标题开始 转至元数据结尾
    centos 7 DNS部署
    MongoDB3.X参数文件
  • 原文地址:https://www.cnblogs.com/zaohe/p/1654057.html
Copyright © 2020-2023  润新知