首页后端开发ASP.NET.net的错误处理机制是什么

.net的错误处理机制是什么

时间2024-01-31 05:00:02发布访客分类ASP.NET浏览968
导读:收集整理的这篇文章主要介绍了.net的错误处理机制是什么,觉得挺不错的,现在分享给大家,也给大家做个参考。.NET的错误处理机制是:1、【Page_Error】事件;2、ErrorPage属性;3、【Application_Error】事件...
收集整理的这篇文章主要介绍了.net的错误处理机制是什么,觉得挺不错的,现在分享给大家,也给大家做个参考。

.NET的错误处理机制是:1、【Page_Error】事件;2、ErrorPage属性;3、【Application_Error】事件;4、【customErrors> 】配置项。以上四种处理机制主要用于异常处理和页面级错误处理。

.NET提供了四种错误处理机制:

1.Page_Error事件

Page_Error 事件提供一种捕获在页级别出现的错误的方法。您可以只是显示错误信息(正如下面的示例代码所示),也可以记录事件或执行某个其他操作。

PRivate void Page_Load(object sender, System.Eventargs e)   {
     // Put user code to inITialize the page here        throw new Exception("Page Error!");
   }
protected void Page_Error(object sender, EventArgs e)    {
          Exception objErr = Server.GetLastError().GetBaseException();
        Response.Write("Error:" + objErr.Message);
           Server.ClearError();
 //同样要注意这句代码的使用  }
    

备注:此示例在浏览器中显示详细的错误信息,提供此示例只是为了进行说明。向应用程序的最终用户显示详细信息一定要小心。更适当的做法是向用户显示一条消息,告知已发生错误,然后将具体的错误详细信息记录在日志中。

2.ErrorPage属性

你几乎可以在页面任何时候设置ErrorPage属性,从而确定页面发生错误的时候会重定向至哪个页面。要让ErrorPage属性能够发挥作用,customErrors> 配置项中的mode属性必须设为"On"。

this.ErrorPage = "~/ErrorHandling/PageError.htML";
    

如果Page_Error和ErrorPage都存在,当抛出Exception时,页面执行顺序是怎样的呢?页面会先执行Page_Error事件处理函数,如果Page_Error()事件中调用函数Server.ClearError()清除异常信息,则不会跳转到ErrorPage属性指定页面;如果没有调用Server.ClearError(),Exception信息会继续向上抛,页面会跳转到ErrorPage指定页面。这也就证明了优先级顺序:Page_Error事件> ErrorPage属性。

3.Application_Error事件

与Page_Error 事件相类似,您可使用Application_Error事件捕获发生在应用程序中的错误。由于事件发生在整个应用程序范围内,因此您可记录应用程序的错误信息或处理其他可能发生的应用程序级别的错误。在Global.aSAX文件中添加如下代码就OK了。

protected void Application_Error(object sender, EventArgs e)      {
             Exception ex = Server.GetLastError().GetBaseException();
             //实际应用中这里可以将Exception信息记LOG或是保存到数据库中         //还可以将错误发邮件给网站维护人员          Response.Write("Error:" + ex.Message);
             //清除Exception,避免继续传递给上一级处理         //这里上级就是CustomerErrors>
    配置节了          Server.ClearError();
      }
    

4.customErrors> 配置项

配置文件web.config中的customErrors> 配置节,可将重定向页指定为默认的错误页defaultredirect或者根据引发的 HTTP 错误代码指定特定页。如果发生在应用程序以前的任一级别都未捕获到的错误,则显示这个自定义页。

customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html">
     error statusCode="404" redirect="~/ErrorHandling/404.html" />
     /customErrors>
    

同样,如果Application_Error和customerErrors> 同时存在,也存在执行顺序的问题。因为优先级Application_Error事件> customErrors> 配置项,所以发生应用程序级错误时,优先执行Application_Error事件中的代码,如果Application_Error事件中调用了Server.ClearError()函数,customerErrors> 配置节中的defaultRedirect不起作用,因为Exception已经被清除;如果Application_Error事件中没用调用了Server.ClearError()函数,错误页会重新定位到defaultRedict指定的URL页面,为用户显示友好出错信息。

通过对.NET提供的以上四种错误处理机制的分析,我们可以把它们从不同的角度分类,便于我们理解和使用。

1.从功能上分类:用于异常处理(Handling exceptions)是Page_Error事件和Application_Error事件;用户错误页面重定向(Redirecting the user to an error page)的是 ErrorPage属性 和 customErrors> 配置项。

2.从错误处理的范围分类:用于页面级(Page level)错误处理的是Page_Error事件 和 ErrorPage属性;用于应用程序级(Application level)错误处理的是Application_Error事件 和 customErrors> 配置项。

以上就是.net的错误处理机制是什么的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

.net

若转载请注明出处: .net的错误处理机制是什么
本文地址: https://pptw.com/jishu/593512.html
C#学习之面向对象如何调用类以及普通方法、静态方法的使用 javascript怎么实现鼠标悬停变色效果

游客 回复需填写必要信息