在系统开发过程中,BUG和异常产生是无处不在的,但是需要我们去做的就是不断去发掘异常、修改异常。

这篇文章主要谈谈我在系统中解决异常的几种方法:

1.控制台程序产生的异常;

在大多数的控制台程序中,运用最多的就是

try{
Action(); 捕捉异常
}
catch(Exption e){ }

但是需要注意的就是在控制台运行中产生的线程和一些特殊异常try捕捉不到,就只有需要使用特定的方法进行捕捉和处理

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException);
Application.ThreadException += new ThreadExceptionEventHandler(ErrorHandlerForm.Form1_UIThreadException)

2.web产生异常;

现在的web系统,分为webFrom和MVC。

webFrom也可以2种方式捕捉异常,一种采用上述的

try{
Action(); 捕捉异常
}
catch(Exption e){ }

第二种就是重写全局方法进行捕捉进行处理

public class Global : System.Web.HttpApplication
{
//处理
public void Application_Error(object sender, EventArgs e)
{
}
}

MVC处理的方式就是更加多样,不但可以用上述2种进行处理

还可以重写父类控制器方法捕捉异常进行处理

protected virtual void OnException(ExceptionContext filterContext);

还有就是MVC最新的IOC思想,添加一个Filter进行异常捕捉进行处理

public class ExceptionHandleFilter : ExceptionFilterAttribute
{
/// <summary>
/// 系统发生异常时执行
/// </summary>
/// <param name="actionExecutedContext"></param>
public override void OnException(HttpActionExecutedContext actionExecutedContext)
{
Action() //处理异常
}
}
//运用
[ExceptionHandleFilter]
public class ServiceForAppController : BaseApiController
{
}

3.接口异常;

接口的处理方式同web处理方式类似,但是需要注意的就是在提供接口的时候最好能够添加一个回调机制,便于反馈解决调用端是否出现调用出现的异常。

4.守护系统如何监控其他系统的异常;

1.这种异常主要运用于守护程序中使用,就是A程序监控B/C程序的运行情况,这种也有2种方式进行处理

第一种方法(推荐)

采用应用程序之间的通信通道进行.B/C生成出异常,就直接交于中间的队列进行处理,然后消费者从队列中取出数据进行后续处理,比如

RabbitMQ
MSMQ

第二种方法

调用windos系统自带的WIND32接口获取程序运行的句柄指针,判断其运行状态进行后续处理。

上述方法只是个人在工作中运用比较多的一些捕捉机制,然后搭配现在比较成熟的日志组件进行处理,更加方便高效。

Log4
NLog

C#之系统异常处理机制的更多相关文章

  1. 第23章 SEH结构化异常处理(2)_编译器对系统SEH机制的封装

    23.2 编译器层面对系统SEH机制的封装 23.2.1 扩展的EXCEPTION_REGISTRATION级相关结构:VC_EXCEPTION_REGISTRATION (1)VC_EXCEPTIO ...

  2. 第23章 SEH结构化异常处理(1)_系统SEH机制

    23.1 基础知识 23.1.1 Windows下的软件异常 (1)中断和异常 ①中断是由外部硬件设备或异步事件产生的 ②异常是由内部事件产生的,可分为故障.陷阱和终止三类. (2)两种异常处理机制: ...

  3. 深入理解java异常处理机制

       异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的 ...

  4. C++中的异常处理机制

    C++中的捕获异常机制catch参数中实参的类型不同,采取的处理方式则不相同,且与普通的函数调用还不一样,具体表现为当抛出异常throw A()或throw obj时,对象会进行一次额外的对象复制操作 ...

  5. Java之异常处理机制

    来源:深入理解java异常处理机制 2.Java异常    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 ...

  6. ASP.NET(C#)中的try catch异常处理机制

    在开发一个Umbraco平台系统的过程中,遇到了问题. 写的代码如下 fileUrl = MediaHelper.GetMediaUrl(Convert.ToInt32(publishedConten ...

  7. 深入理解java的异常处理机制

     JAVA异常的概念    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的 ...

  8. java中的异常处理机制

    java异常处理机制 1)在java语言中,通常将可能出现异常的语句放入try{}语句中,将出现错误后需要执行的语句放入到catch{}语句中,将无论是否发生异常都要执行的语句放在finally{}语 ...

  9. Java异常处理机制 —— 深入理解与开发应用

    本文为原创博文,严禁转载,侵权必究! Java异常处理机制在日常开发中应用频繁,其最主要的不外乎几个关键字:try.catch.finally.throw.throws,以及各种各样的Exceptio ...

随机推荐

  1. Redis 排行榜 自己简单练习

    <?php class Ranks{ const PREFIX = 'zhengban'; protected $redis = ''; /* 初始化 */ public function __ ...

  2. HTML5学习笔记三:aside元素,time元素与微格式

    一.aside元素 表示当前页面或文章的附属信息部分,相关的引用,侧边栏,广告等有别于主要内容的部分:主要有一下两种用法: 1. 被包含在article元素中作为主要内容的附属信息部分,可以是与当前文 ...

  3. eclipse安装Veloeclipse(Velocity编辑插件)

    eclipse安装Veloeclipse(Velocity编辑插件) Help-->install new software-->Add 增加 Name:Veloeclipse Value ...

  4. iOS 之 const

    const int a与 int const a一样. const int *a ;//指针可以修改,指向常整形的指针 int* const a;// 常指针, int* 作为一个整体被限制, 所以指 ...

  5. windows apache 开启 GZIP

    从服务端优化来说,通过对服务端做压缩配置可以大大减小文本文件的体积,从而使加载文本的速度成倍的加快.目前比较通用的压缩方法是启用gzip压缩.它 会把浏览器请求的页面,以及页面中引用的静态资源以压缩包 ...

  6. FMS中的onStatus

    在FlashCom中的Camera, Microphone, LocalConnection, NetConnection,NetStream和 SharedObject对象都提供了事件响应,onst ...

  7. Codeforces758B

    B. Blown Garland time limit per test:1 second memory limit per test:256 megabytes input:standard inp ...

  8. 应对linux下的闰秒

    文章作者:luxianghao 文章来源:http://www.cnblogs.com/luxianghao/p/6339470.html  转载请注明,谢谢合作. 免责声明:文章内容仅代表个人观点, ...

  9. webpack 学习心得(一)

    Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. 因为本人也正在学习webpack ,所以此篇文章比较入门. 首先你想使用webp ...

  10. 蓝桥网试题 java 入门训练 圆的面积

    ---------------------------------------------------------------------------------------------------- ...