快速业务通道

为你的网站定制一套统一的异常处理机制

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
_Error(object sender, System.EventArgs e)
{

             Exception currentError = Server.GetLastError();

             if (currentError == null)
             {
                 return;
             }

             LogError(currentError);  // 把错误信息写到你的日志列表里面,也可以同时给系统管理员发送一封邮件。

             string friendlyMsg = "你的友好错误提示";

#if DEBUG  // 如果程序处于Debug状态,则直接在页面显示具体错误信息,便于调试

             friendlyMsg = currentError.Message + “<br />Stack: ” + currentError. StackTrace;

#endif

             // 下面的信息是显示给用户的友好提示信息

             Response.Write(friendlyMsg);  // 你也可以重定向到某个错误提示页面。这里要小心一点的是,确保你的错误提示页面绝对不要有个Bug,否则可能会形成死循环。所以,错误提示页面最好就是一张完全静态的HTML页面。

             Server.ClearError();

}

上面的异常处理方法主要干了两件事情:第一,记录详细的出错信息,包括错误描述,时间,发生的程序集,堆栈跟踪,甚至当前使用网页的用户信息,IP地址等信息。同时给管理员发送邮件。第二,给用户显示一个非常友好的错误提示信息,让用户心里好受些。一旦完成这个基类设计以后,你只要让你的其他所有页面都从这个基类继承下来,就能保证整个网站都有一个统一的异常处理机制了。

第二种统一处理机制的实现方式是,在Global. asax里面实现。开发过.NET网站的朋友应该对他非常熟悉,在里面你可以为整个站点定义各种事件的处理方法,比如SessionStart, ApplicationStart等等。这里我们关注的是站点级的异常处理事件Application_Error(Object sender, EventArgs e),当网站遇到异常的时候,甚至是像404这样的错误,都会触发这个事件。实现方式如下:

void Application_Error(Object sender, EventArgs e)
{
            Exception currentError = Server.GetLastError();

             if (currentError == null)
             {
                 return;
             }

             LogError(currentError);  // 把错误信息写到你的日志列表里面,也可以同时给系统管理员发送一封邮件。

             string friendlyMsg = "你的友好错误提示";

#if DEBUG  // 如果程序处于Debug状态,则直接在页面显示具体错误信息,便于调试

             friendlyMsg = currentError.Message + “<br />Stack: ” + currentError. StackTrace;

#endif

             // 下面的信息是显示给用户的友好提示信息
             Response.Write(friendlyMsg);  // 你也可以重定向到某个错误提示页面。这里要小心一点的是,确保你的错误提示页面绝对不要有个Bug,否则可能会形成死循环。所以,错误提示页面最好就是一张完全静态的HTML页面。
             Server.ClearError();
}

当然你可以这样来实现:

// 在Global中

void Application_Error(Object sender, EventArgs e)
{
Server.Transfer("Errors.aspx");
}

// 在Error.aspx中

protected void Page_Load(object sender, EventArgs 

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号