异常处理框架一:需求与基本结构说明

基本需求:

  1. 能对异常进行统一处理,处理方式可配置(xml)
  2. 基本的处理方式分为忽略、记录日志、提示用户(web或客户端)、重新抛出(对重新抛出的异常不再处理)等
  3. 用户可扩展添加自己的处理方式

框架基本结构说明:

Handler:用户调用的接口,调用时必须传递异常信息,可选参数可以传递输出方式、提示信息

public static void Handle(Exception ex)

public static void Handle(Exception ex, string errorString)

public static void Handle(Exception ex, ExceptionOutput output)

public static void Handle(Exception ex, string errorString, ExceptionOutput output)

ExceptionOutput:输出方式枚举,可以组合

[Flags]
public enum ExceptionOutput {
        Ignore=0x01,
        Log=0x02,
        Alert=0x04,
        Throw=0x08
}

ExceptionInfo:框架的异常处理信息

 public ExceptionOutput Output{set;get;}

 public Exception OriginException{set;get;}

 public string ErrorString { set; get; }

public bool Handled { set; get; }

MExceptionHandle:异常处理基类,多个异常处理对象组成一个处理链

Config:读取xml配置文件,生成处理链,设置默认的输出方式和提示信息

Exception2Info:根据用户传递的参数以及系统默认的输出方式和提示信息生成框架需要的异常处理信息

public static ExceptionInfo MakeInfo(Exception ex)
时间: 2024-10-20 00:49:13

异常处理框架一:需求与基本结构说明的相关文章

异常以及异常处理框架探析

概述 一般情况下,企业级应用都对应着复杂的业务逻辑,为了保证系统的健壮,必然需要面对各种系统业务异常和运行时异常. 不好的异常处理方式容易造成应用程序逻辑混乱,脆弱而难于管理.应用程序中充斥着零散的异常处理代码,使程序代码晦涩难懂.可读性差,并且难于维护. 一个好的异常处理框架能为应用程序的异常处理提供统一的处理视图,把异常处理从程序正常运行逻辑分离出来,以至于提供更加结构化以及可读性的程序架构.另外,一个好的异常处理框架具备可扩展性,很容易根据具体的异常处理需求,扩展出特定的异常处理逻辑. 另

绘图框架新需求

最近都是在这个绘图框架上进行迭代,主要是增加一些分形的绘图算法,在实现Fractal Tree时发现这个框架已经不能满足我的需求了,因为每当我需要调整一些参数,例如分形树的角度,长度,迭代次数等参数时都需要重新修改编译代码,很不方便.所以最近需要给这个框架增加新的功能,要求每运行一个绘图算法时要根据这个分形图案的实际情况加入算法参数设置,颜色设置等功能,另外一个需求是要给这个框架添加异常处理.

ntv.js框架(第二章) - 源代码目录结构

源代码目录结构: css              // 包含一些标签默认样式重置.常用class.组件所需的css样式 images       // 包含了2张透明图,具体用处后续介绍(可选目录) js               // 框架核心代码 js/effect    // 框架提供的效果插件,例如滚动div.滑动菜单 js文件结构: ?1common.js     // 公共函数类.例如:将document.getElementById(id)封装为 $("#id")函数

浅谈跨平台框架 Flutter 的优势与结构

作者:个推iOS工程师 伊泽瑞尔 一.背景 目前,移动开发技术主要分为原生开发和跨平台开发两种.其中,原生应用是指在某个特定的移动平台上,使用平台所支持的开发工具和语言,直接调用系统提供的API所开发的应用.原生开发的主要优势体现在:1.可以快速访问本平台的全部功能,比如摄像头.GPS等:2.原生应用的速度快.性能高,而且可以实现比较复杂的动画和绘制效果,用户体验较好.原生开发的缺点也很明显,主要体现在:1.开发成本较高,不同的平台必须维护不同的代码,人力成本也会随之增加:2.有新的功能需要更新

修改MDI工程主框架窗口标题(修改CREATESTRUCT结构体)

版权声明:本文为博主原创文章,未经博主允许不得转载. [cpp] view plain copy //在CMainFrame类的PreCreateWindow函数中加入 m_strTitle = _T("Hello"); cs.style &= ~FWS_ADDTOTITLE; //即可修改主框架窗口的标题.代码如下: BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { m_strTitle = _T("H

制作新网络框架快速自动生成消息结构体的编辑器

这两天制作了一个自动生成代码脚本的窗体编辑器 目前还没有做过第一行可以选择生成的脚本类型,分请求消息和回应消息两种结构体脚本 第二行可以手动输入命名空间,第三行手动输入文件的名称,类名与文件名称相同 后面两个ID是消息的ID 下面的Popon的列表根据第一行选择脚本类型不同是变化的 选中string或者数组时会出现长度的输入框 输入好一条字段后点击Add New Field按钮可以添加下一条 当有大于一条字段的时候就可以生成脚本了,选一个路径将其保存 这行代码可以刷新Project文件夹,自动生

MRD市场需求文档结构

MRD文档(重要) MRD的汇报对象:参与整个产品开发的人员 一.文档说明:基本信息 公司名称 产品名称 文档创建日期 创建人 联系方式 部门 职位 日期 版本 修改人 修改内容 审核人 2.文档目的: 用于说明网站的相关市场.用户.产品规划.核心目标.产品路线图.项目规划 3.文档概要: 文档说明 市场说明 用户说明 产品说明 二.市场分析 摘要(可选) 现有市场存在的问题与机会(是否需要) 产品方面(产品形态复杂,用户体验差) 技术方面 (语音压缩技术不成熟,外资搜索队中文理解不够深刻) 运

集合框架(用LinkedList实现栈结构的集合代码)

package cn.itcast_05; import java.util.Iterator; import java.util.LinkedList; /* *请用LinkedList模拟栈数据结构的集合,并测试(不是用Linklist去做这个效果,而是用集合,所以下面写的代码不符合要求) *题目的意思是: * 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟. */ public class LinkedListDemo { public static void m

MSSql异常处理框架

模拟实现异常堆栈,报告调用链和异常位置,代码如下: CREATE PROC [MyHelper].[ThrowError] @ProcId INT AS --对于重新封装Error,微软有个raiserror方案:[sys].[sp_replrethrow] IF ERROR_NUMBER() IS NULL RETURN; DECLARE @_ProcName SYSNAME=ISNULL(LTRIM(RTRIM(OBJECT_NAME(@ProcId))),'出错位置不详') ,@_Num