• 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);
  • 相关阅读:
    windows中抓取hash小结(上)
    内网横向移动常见方法
    常见默认服务端口整理
    Kerberos认证流程简述
    SQL注入之MySQL报错注入整理
    域内常用命令整理
    一个极其朴素的目录扫描Python脚本
    5. 7冲刺记录
    5. 6冲刺记录
    梦断代码阅读笔记
  • 原文地址:https://www.cnblogs.com/Akeke/p/7084920.html
Copyright © 2020-2023  润新知