您的位置:首页 > 编程语言 > ASP

ASP.NET的错误处理机制[转]

2010-01-20 09:30 337 查看
转载出处:http://space.itpub.net/12639172/viewspace-349311

Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制。当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行跟踪处理;二是以友好的方式提示最终用户页面发生了错误,而不能将未处理的错误信息显示给用户。

让我们想想,ASP.NET为我们提供了几种错误处理机制?如果同时使用他们是不是有一定的优先级?.NET提供了四种错误处理机制,它们有一定的优先级顺序:Page_Error事件>ErrorPage属性>Application_Error事件> <customErrors>配置项。下面分别介绍这四种错误处理机制的用法。

1.Page_Error事件

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

private void Page_Load(object sender, System.EventArgs e)

protected void Application_Error(object sender, EventArgs e)

{

Exception ex = Server.GetLastError().GetBaseException();

//实际应用中这里可以将Exception信息记Log或是保存到数据库中

//还可以将错误发邮件给网站维护人员

Response.Write("Error:" + ex.Message);

//清除Exception,避免继续传递给上一级处理

//这里上级就是<CustomerErrors>配置节了

T c#M&YD:X0 Server.ClearError();

}

4.<customErrors>配置项

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

<customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html">

vxa2M e$N.tBL0 <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>配置项。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: