对于一个大的系统来说,异常处理必须要有一个总的策略和方针,并在组织内贯彻执行,否则就很难把异常处理好。

  1. 从整个系统全局的角度来看

    1. 进程内错误----用异常来报告错误(内部错误);底层模块通过异常来向高层模块报告错误的发生。
    2. 进程间错误----用ErrorCode, ErrorMessage, Action来向外部系统报告错误(业务错误),尤其是对外提供公共服务,除非是对外不公开的子系统,此时可以使用原生的异常来报告错误。一旦错误超出服务边界,最好使用ErrorCode, ErrorMessage, Action的方式向外部报告。
  2. 从进程内不同模块的角度来看
    1. 底层模块:DLL,一般不需要Catch异常;尽量多的使用Try--Finally;除非定义的自己的异常。
    2. 高层模块:EXE等,尽量在高层模块中处理异常,报告错误。
  3. 从不同的系统类型的角度来讲
    1. 服务型:7* 24小时,通常情况下要确保系统的任何情况下都不要Crash,系统发生的任何Exception都要有Log,有些情况下可能还需要发邮件来通知。
    2. UI型:友好的给出用户提示信息。必要的时候可以使用AOP来在全局唯一的点来处理Exception。
  4. 实际的异常处理规则
    1. 异常类必须符合标准,必须可以序列化。

      [Serializable]public class ExampleException : ApplicationException{public ExampleException()        : base()    {
      
          }
      
      public ExampleException(string message)        : base(message)    {
      
          }
      
      public ExampleException(string message, Exception inner) :base(message, inner)    {
      
          }
      
      protected ExampleException(SerializationInfo info, StreamingContext context) :base(info, context)    {    }}

    2. 不能丢掉任何一个异常,通常情况下要使用InnerException来保持原始的异常。
          try    {//Read configuration from file        ...    }catch (FileNotFoundException ex)    {throw new ExampleException("Can't find the configration file.", ex);    }

    3. Catch异常后如果不Throw的话,必须Log异常。
    4. 记ExceptionLog时必须包含栈信息,也就是要使用ToString方法。

转载于:https://www.cnblogs.com/zanxiaofeng/archive/2012/02/17/Exception.html

如何全面的把握一个系统的异常处理相关推荐

  1. 系统应用全方面评估维度,全面评测一个系统。

    主要涵盖以下层面,全方面评价一个系统的稳健性. 1.联机交易系统性能 2.批处理系统性能 3.容量估计 4.应用扩展能力 5.应用可用性 6.交易数据一致性 7.应用可靠性 部分指标如下表,全面评价的 ...

  2. [转]我的销售心得(续2)-如何把握一个项目

    『原创』我的销售心得(续2)-如何把握一个项目   作者:TigerWoods | 王虎 TigerWoods 王虎 --世上自有公道,付出总有回报 很多时候,我们遇到.听到了一个项目,可能从多个途径 ...

  3. 通用权限管理系统组件 (GPM - General Permissions Manager) 权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱...

    为什么80%的码农都做不了架构师?>>>    权限管理以前我们都是自己开发,可是到下一个系统又不适用,又改,加上人员流动大,管理很混乱 Ψ吉日嘎拉 采用通用权限管理系统,这些烦恼就 ...

  4. 为什么新来的技术很难接手维护一个系统

    为什么开发功能变得越来越慢? 某天来一个技术,他跟老板说:这个系统太臃肿了.很乱,我很难开展工作下去,至少很难按照我的经验和设想来实施.如果想让我顺利干下去,办法就是对系统进行重构一次(重构代码,或者 ...

  5. 如何熟悉一个系统?(内含知识大图)

    作者 | 唐志龙(鲲龙)  阿里巴巴高级开发工程师 导读:本文总结了熟悉系统主要分三部分:业务学习.技术学习.实战.每部分会梳理一些在学习过程中需要解答的问题,这些问题随着经验的积累需要逐步补充完善. ...

  6. 安全是一个系统问题包括服务器安全,信息安全技术题库:信息泄露对于Web服务器的危害在于( )。...

    相关题目与解析 Web错误信息可能泄露服务器型号版本.数据库型号.路径.代码.() 关于Web应用防火墙,Web服务器防范敏感信息泄露的方式不包括() 在网络中信息安全十分重要,下面与Web服务器安全 ...

  7. C/C++ 如何快速解构一个系统的源码(如何看懂大型工程项目的源码)

    问: 研究一个开源系统源码的时候,总是不知道该从哪里研究. 我现在看源码从index文件开始看起,遇到包含的文件,就去看包含的文件, 包含的文件中又引用了其它的文件,总是觉得看来看去,很没有逻辑性. ...

  8. 灵魂 36 问,让你快速熟悉一个系统

    简介: 面对一个完全陌生的系统,如何快速的熟悉并上手?本文将从三个方面进行总结,提供一个系统的方法,同时也可以用来 review 已有的系统,查漏补缺. 前言 开发人员经常会面临下面一些场景: 新人入 ...

  9. 继承练习 :开发一个系统时 需要对员工进行建模 员工包含3个属性 姓名 工号 工资 功能 work

    /* 练习: 假如我们开发一个系统时 需要对员工进行建模 员工包含3个属性 姓名 工号 工资 功能 work 经理 也是员工 除了含有员工的属性外 另外还有一个奖金属性 请用继承的思想设计出 员工类 ...

最新文章

  1. WatchClear 方法 html5,clearWatch()
  2. mac mysql启动问题
  3. vb.net2019- 机器学习ml.net情绪分析(2)
  4. 微信机、网络和java的相关知识点
  5. Java Stream Collectors.groupingBy()实现分组(单字段分组,多字段分组)
  6. 图片标注尺寸_AutoCAD图纸与测量尺寸不一样怎么办
  7. Serverless 实战 —— 基于 Serverless + 企业微信打造 nCoV 疫情监控小助手
  8. 【Java从0到架构师】JDBC、Spring JDBC、JUnit
  9. 神经网络matlab仿真,MATLAB神经网络仿真与应用_IT教程网
  10. Android 福彩3D体彩排列(源码+算法)
  11. php在线加密lua,AES 256 Lua + PHP
  12. [4K测试视频] 杜比4K UHD蓝光演示碟 Dolby.UHD.BluRay.Demo.Disc.March.2018.2160p.BluRay下载
  13. 飞机大战-玩家飞机被击中
  14. CCproxy代理服务器
  15. 《计算之魂》1.11.2--阅读心得
  16. 使用计算机自适应测验大型测验,计算机自适应测验方法与流程
  17. 常见端口号一览(详细)
  18. UE4 让材质的UV动起来
  19. 求任何时间下不同纬度太阳高度角的计算公式
  20. svg 中 text dx dy 含义

热门文章

  1. 罗盘时钟代码(转载)
  2. 为什么“极大似然估计表达式的极值”可以用来估计参数
  3. php copy 图片_PHP-imagecopy黑色背景
  4. 网络相关的一些基本的命令的使用(ping、ifconfig、route、netstat)---Linux学习笔记
  5. 2路由策略_route-map(执行路由策略)
  6. Azure已成为微软业绩的顶梁柱
  7. Redis 的安装与使用
  8. 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输
  9. svn的搭建和和文件检出与提交
  10. 日志服务客户端(logtail)异常检测工具