• C#中那些常见的异常处理机制
  • 远方的旅行 发表于 2017/2/28 15:31:00 | 分类标签: 异常处理 try捕捉
  • 在系统开发过程中,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
  • 请您注意

    ·自觉遵守:爱国、守法、自律、真实、文明的原则

    ·尊重网上道德,遵守《全国人大常委会关于维护互联网安全的决定》及中华人民共和国其他各项有关法律法规

    ·严禁发表危害国家安全,破坏民族团结、国家宗教政策和社会稳定,含侮辱、诽谤、教唆、淫秽等内容的作品

    ·承担一切因您的行为而直接或间接导致的民事或刑事法律责任

    ·您在编程中国社区新闻评论发表的作品,本网站有权在网站内保留、转载、引用或者删除

    ·参与本评论即表明您已经阅读并接受上述条款

  • 感谢本文作者
  • 作者头像
  • 昵称:远方的旅行
  • 加入时间:2013/6/13 0:00:00
  • TA的签名
  • 这家伙很懒,虾米都没写
  • +进入TA的空间
  • 以下内容也很赞哦
分享按钮