ASP.NET中的异常处理

  .NET框架提供了多种日记志工具,比如可以在错误时发送E-mail,添加到数据库记录或者读写文件中。一个较好的方式就是使用Windows事件,Windows事件程序是Windows内置的用于记录系统或者是应用程序日志的一个工具。

  1.点击“开始|设置|控制面板|管理工具”菜单,选择事件查看器,可以启动Windows事件查看器窗口。

    2.写入事件日志

   System.Diagnostics命名空间下提供了可以读写事件日志的类,开发人员可以使用这个命名空间中的类将ASP.NET异常信息写入事件日志中,例如除法运算出现任何异常时将异常信息写入事件日志。

    (1)新建一个Default.aspx页面添加两个TextBox控件和一个Button控件和一个Lable控件。

    (2)单击按钮时,将从两个文本框中获取数据,并执行除法运算。如果运算中有任何异常,则在Lable控件中显示错误信息,并将异常消息写入事件日志,代码如下:

  protected void Button1_Click(object sender , EventArgs e)

  {

    try

    {

      //除法运算

      decimal a,b,result;

      a = decimal.Parse(TextBox1.Text);

      b = decimal.Parse(TextBox2.Text);

      result = a / b;

    }

    catch (Exception ex)

    {

      //显示异常信息

      lblResult.Text ="错误消息:"+ex.Message+"<br/>";

      lblResult.Text += "错误源:"+ex.Source+"<br/>";

      lblResult.Text +="堆栈追踪:"+ex.StackTrace+"<br/>";

      //将除法运算错误信息写入事件日志

      EventLog elog = new EventLog();

      elog.Source = "除法运算错误";

      elog.WriteEntry(ex.Message, EventLogEntryType.Error);

    }

  }

  3.自定义日志

   自定义日志是指属于自己的分类的日志,比如创建一个属于程序特有的错误分类。

   EventLog 提供了几个重载的构造函数,如果为构造函数指定一个分类名称,事件日志将写入到指定分类名称下面。

  例:

  protected void Button1_Click(object sender , EventArgs e)

  {

    try

    {

      //除法运算

      decimal a,b,result;

      a = decimal.Parse(TextBox1.Text);

      b = decimal.Parse(TextBox2.Text);

      result = a / b;

    }

    catch (Exception ex)

    {

      //显示异常信息

      lblResult.Text ="错误消息:"+ex.Message+"<br/>";

      lblResult.Text += "错误源:"+ex.Source+"<br/>";

      lblResult.Text +="堆栈追踪:"+ex.StackTrace+"<br/>";

      //将除法运算错误信息写入事件日志

      //调用EventLog的静态方法SourceExists判断指定的事件源是否注册

      if(!EventLog.SourceExists("除法运算错误2"))

      {

        //如果没有注册,调用CreateEventSource方法注册事件,并创建一个新的事件日志

        EventLog.CreateEventSource("除法运算2","MyApplicationError");

      }

      //EventLog可以指定事件日志名称,如果不指定,则为Application事件日志

      //该构造函数将打开指定名称的事件日志,如果不存在,则创建一个新的事件日志

      EventLog elog = new EventLog("MyApplicationError");

      //指定日志源

      elog.Source = "除法运算错误2";

      //调用WriteEntry方法向日志中写入一个日志项

      elog.WriteEntry(ex.Message, EventLogEntryType.Error);

    }

  }

  4.编程查看事件日志

  (1)新建Web窗体命名为ShowEventLog.aspx,使用一个GridView控件来显示事件日志信息。

  (2)新建一个名为myEventLog.cs的类文件,代码如下:

    //需要添加如下两个命名空间

     using System.Collections.Generic;

    using System.Diagnostics;

    //MyEventLog 代表事件日志中的日志项

    public class MyEventLog

    {

      public MyEventLog(string entrytype, string message, DataTime generatetime, string logsource)

      {

        //日志类型

        EntryType = entrytype;

        //日志信息

        Message = message;

        //产生时间

        GeneratedTime = generatetime;

        //事件来源

        LogSource = logsource;        

      }

      public string EntryType {get; set; }

      public string Message {get; set; }

      public string GeneratedTime {get; set; }

      public string LogSource {get; set; }

    }

    //事件日志列表类, 用于获取事件日志中指定日志名称的事件

    public class LogList : List <MyEventLog>

    {

      public LogList(string logName)

      {

        //如果日志不存在,引发异常

        if(!EventLog.Exists(logName))

        {

          throw new Exception ("指定的日志名称"+logName+"不存在!")

        }

        else

        {

          //打开指定日志名称的日志

          EventLog log = new EventLog (logName);

          //遍历日志项

          foreach (EventLogEntry entry in log.Entries)

          {

            //构造一个myEventLog 类并添加到日志列表中

            MyEventLog mel = new MyEventLog (entry.EntryType.ToString(),entry.Message,entry.TimeGenerated,entry.Source);

            this.Add(mel);

          }

        }

      }

    }

  (3)在ShowEventLog.aspx页面的Page_Load事件处理器中添加如下代码:

    protected void Page_Load(object sender, EventArgs e)

    {

      //获取日志名称为MyApplicationError的日志

      LogList loglist = new LogList ("MyApplicationError");

      //绑定GridView

      GridView1.DataSource = loglist;

      GridView1.DataBind();

    }

转载于:https://www.cnblogs.com/muliang/archive/2011/08/29/2158893.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值