• C# 异常处理保存


    通过设置异常处理可以将错误信息保存到日志文件中,避免直接在前端显示

    1.新建类MyExceptionAttribute

     1 public class MyExceptionAttribute : HandleErrorAttribute
     2     {
     3         public static Queue<Exception> ExecptionQueue = new Queue<Exception>();
     4         /// <summary>
     5         /// 可以捕获异常数据
     6         /// </summary>
     7         /// <param name="filterContext"></param>
     8         public override void OnException(ExceptionContext filterContext)
     9         {
    10           
    11             base.OnException(filterContext);
    12             Exception ex = filterContext.Exception;
    13             //写到队列
    14             ExecptionQueue.Enqueue(ex);
    15             //跳转到错误页面.
    16             filterContext.HttpContext.Response.Redirect("/Error.html");
    17         }
    18     }
    MyExceptionAttribute

    2.创建错误网页Error.html。当发生错误时直接跳转到错误页。

    3.在Global.asax文件Application_Start()方法中添加处理代码

     1 //开启一个线程,扫描异常信息队列。
     2             string filePath = Server.MapPath("/Log/");
     3             ThreadPool.QueueUserWorkItem((a) => {
     4                 while (true)
     5                 {
     6                     //判断一下队列中是否有数据
     7                     if (MyExceptionAttribute.ExecptionQueue.Count() > 0)
     8                     {
     9                         Exception ex=MyExceptionAttribute.ExecptionQueue.Dequeue();
    10                         if (ex != null)
    11                         {
    12                             //将异常信息写到日志文件中。
    13                             string fileName = DateTime.Now.ToString("yyyy-MM-dd");
    14                             File.AppendAllText(filePath+fileName+".txt",ex.ToString(),System.Text.Encoding.UTF8);
    15                             
    16                         }
    17                         else
    18                         {
    19                             //如果队列中没有数据,休息
    20                             Thread.Sleep(3000);
    21                         }
    22                     }
    23                     else
    24                     {
    25                         //如果队列中没有数据,休息
    26                         Thread.Sleep(3000);
    27                     }
    28                 }
    29             
    30             
    31             },filePath);
    protected void Application_Start()
  • 相关阅读:
    20181113-2 每周例行报告
    20181030-4 每周例行报告
    20180925-5 代码规范,结对要求
    20181023-3 每周例行报告
    20181016-10 每周例行报告
    PSP总结报告
    作业要求 20181204-1 每周例行报告
    公开感谢
    附加作业 软件工程原则的应用实例分析
    作业要求 20181127-2每周例行报告
  • 原文地址:https://www.cnblogs.com/huangtaiyi/p/10902720.html
Copyright © 2020-2023  润新知