一个比较好的.net 3.5的异常报告类

来源:互联网 发布:软件需求说明书模板 编辑:程序博客网 时间:2024/04/29 22:30
发现了一个比较好的异常报告类,其中用到了.net 3.5以上的扩展方法的机制,
实现的是当有异常时,发邮件报告
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Net.Mail;

namespace Experiement
{
    public static class MyExtension
    {
        public static void SendErrorEmail(this Exception ex)
        {
            MailMessage mailMessage = new MailMessage(new MailAddress("from@gmail.com")
                                       , new MailAddress("to@gmail.com"));
            mailMessage.Subject = "Exception Occured in your site";
            mailMessage.IsBodyHtml = true;

            System.Text.StringBuilder errorMessage = new System.Text.StringBuilder();

            errorMessage.AppendLine(string.Format("<B>{0}</B>:{1}","Exception",ex.Message));
            errorMessage.AppendLine(string.Format("<B>{0}</B>:{1}", "Stack Trace", ex.StackTrace));

            if (ex.InnerException != null)
            {
                errorMessage.AppendLine(string.Format("<B>{0}</B>:{1}", " Inner Exception", ex.InnerException.Message));
                errorMessage.AppendLine(string.Format("<B>{0}</B>:{1}", "Inner Stack Trace", ex.InnerException.StackTrace));
            }

            mailMessage.Body = errorMessage.ToString();

            System.Net.NetworkCredential networkCredentials = new
            System.Net.NetworkCredential("youraccount@gmail.com", "password");
           
            SmtpClient smtpClient = new SmtpClient();
            smtpClient.EnableSsl = true;
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Credentials = networkCredentials;
            smtpClient.Host = "smtp.gmail.com";
            smtpClient.Port = 587;
            smtpClient.Send(mailMessage);

           
        }
    }
}

使用:
using System;

namespace Experiement
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender,System.EventArgs e)
        {
            try
            {
                throw new Exception("My custom Exception");
            }
            catch (Exception ex)
            {
                ex.SendErrorEmail();
                Response.Write(ex.Message);
            }
        }

    }
}
原创粉丝点击