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);
  • 相关阅读:
    scrapy爬虫系列之三--爬取图片保存到本地
    scrapy爬虫系列之四--爬取列表和详情
    python3.7.2 ssl版本过低导致pip无法使用的问题
    python3安装后无法使用退格键的问题
    位运算符和unity Layers
    unity常用小知识点
    unity -- Time类(持续更新中)
    随便说说 post-processing
    unity图片后期处理
    顶点/片元 shader 总结
  • 原文地址:https://www.cnblogs.com/Akeke/p/7084920.html
Copyright © 2011-2022 走看看