zoukankan      html  css  js  c++  java
  • MVC 中创建自己的异常处理

    1.新建类一个类继承 HandleErrorAttribute 类把异常书写到队列中

     1  public class MyExceptionAttribute: HandleErrorAttribute
     2     {
     3         //新建队列
     4          public static Queue<Exception> queueException = new Queue<Exception>();
     5         //重写OnException方法(在程序遇到异常时触发这个方法)
     6         public override void OnException(ExceptionContext filterContext)
     7         {
     8             //访问父类中的异常触发,并把异常信息传过去
     9             base.OnException(filterContext);
    10             //入队
    11             queueException.Enqueue(filterContext.Exception);
    12             //跳转到异常页面
    13             filterContext.HttpContext.Response.Redirect("~/Global/Error");
    14         }
    15     }

    2.在 FilterConfig 注册我们自定义的异常处理类

     public class FilterConfig
        {
            public static void RegisterGlobalFilters(GlobalFilterCollection filters)
            {
                //filters.Add(new HandleErrorAttribute());
                filters.Add(new MyExceptionAttribute());
            }
        }

    3.在Global文件中新增一个线程池专门读取队里的异常数据,写进日志文件(可以根据自己的项目需求,自己决定如何去处理异常)

      ThreadPool.QueueUserWorkItem((a) =>
                {
                    while (true)
                    {
                        if (MyExceptionAttribute.queueException.Count > 0)
                        {
                            Exception ex = MyExceptionAttribute.queueException.Dequeue();//出队
                            string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                            string start = DateTime.Now.ToString("HH:mm:ss") + "
    ";
                            string end = "------------------------------------------------------------" + "
    ";
                            File.AppendAllText(fileLogPath + fileName, start + "ErrorMsg:" + ex.ToString() + "
    " + end, System.Text.Encoding.Default);
                        }
                        else
                        {
                            Thread.Sleep(5000);//如果队列中没有数据,休息避免造成CPU的空转.
                        }
                    }
                }, fileLogPath);
  • 相关阅读:
    Delphi 之 内存篇(二)
    VC++ 之 第八课(面向对象三)
    Delphi API 之 BitBlt
    我所认为的极客精神(一)
    DOS程序员手册(十五)
    DOS程序员手册(十四)
    DOS程序员手册(十三)
    DOS程序员手册(十二)
    DOS程序员手册(十一)
    DOS程序员手册(十)
  • 原文地址:https://www.cnblogs.com/Akeke/p/7084920.html
Copyright © 2011-2022 走看看