欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

利用 Application_Error 捕获所有异常

创建时间:2011年06月21日 18:16  阅读次数:(6864)
分享到:

WebApplication开发中通常是需要使用异常捕获,以提供给用户良好的提示页面。

为了减少代码,统一日志处理,可以在 Global.asax 中 Application_Error 的事件处理方法中统一处理。

它将捕获所有 Application 级别的 UnhandleException 和 HttpException(比如:访问的页面不存在等)

总之,在这里处理的话,那么在页面中的所有 try/catch 处理都可以不要了。

    void Application_Error(object sender, EventArgs e)
    {
        // Code that runs when an unhandled error occurs
        try
        {
            Server.Transfer("~/Error.aspx");
        }
        catch
        {
            // ignore
        }
    }

 

因为 Server.Transfer 将固定抛出 ThreadAbort Exception 异常,不用理会。

然后在指定的 Error.aspx 里你可以通过  Server.GetLastError() 来进行,错误分类,日志处理,显示信息等工作。

public partial class Error : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
             Exception ex = Server.GetLastError().GetBaseException();
             this.Label1.Text = DateTime.Now.ToString();
             if (ex != null)
             {
                  // 错误的信息
                  this.Label2.Text = ex.Message;
                  // 错误的堆栈
                  this.Label3.Text = ex.StackTrace.Replace(" ", "<br/>");
                  // 出错的方法名
                  this.Label4.Text = ex.TargetSite.Name;
                  // 出错的类名
                  this.Label5.Text = ex.TargetSite.DeclaringType.FullName;
             }
             // 清空最后的错误
             Server.ClearError();
        }
    }
}

来源:http://blog.csdn.net/fangxinggood/archive/2007/03/29/1545491.aspx
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 52+13=? 的结果(结果是:65)
结  果: