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

Asp.net错误->友好处理

2012-11-21 15:41 309 查看
  有些错误和异常是程序员无法控制的,如:

  网络不可用

  服务器崩溃

  服务器超负荷

  客户端请求的页面不存在或者没有权限

  服务器出现了不可预知的异常,而该异常没有被catch

  这些导致无法为客户端正确的提供服务,做为程序员,我们有责任为用户展现友好的自定义错误页面。

  学习到的三个方法。

  一、webconfig中进行配置

  

代码

void Application_Error(object sender, EventArgs e)
{
// 在出现未处理的错误时运行的代码
HttpUnhandledException eHttp = this.Server.GetLastError() as HttpUnhandledException;
Exception eApp = eHttp.InnerException;//可以返回异常
Response.Redirect("Default3.aspx?exe='"+Server.UrlEncode(eApp.Message)+"'");
Server.ClearError();
Response.End();

}


  三、Page的ErrorPage属性

  在页面的处理过程中,可以在任何时候设置或者获取Page.ErrorPage属性,能够通过程序的方式指定异常未被捕获时,Asp.net会将客户端重定向到那个页面。

  这个有两种设置方法,一种是直接在Page属性里边设置,为某个页面设置统一的错误页面。

  

<%@ Page Language="C#"  ErrorPage="~/Default2.aspx" AutoEventWireup="true"  CodeFile="Default.aspx.cs"  Inherits="_Default" %>


  也可以在程序中动态的设置,假如页面中有n个button,可以为每个button设置特定的ErrorPage

  

protected void btnTest_Click(object sender, EventArgs e)    {
this.ErrorPage = "Default2.aspx";
}


  该属性是和<customErrors>配置元素配合起来才会起作用。为了使Page.ErrorPage起作用,<customErrors>的mode属性必须设置为On。

  在异常未被捕获的时候,如果没有设置ErrorPage,那么HttpApplication.Error事件。如果HttpApplication.Error没有订阅错误事件,那么程序会去找<customErrors>配置的元素(如果可以的话)。

  优先级:ErrorPage属性,Application_Error、<customErrors>配置,如果多个错误的机制同时存在,应用程序会按照优先级找到第一个满足条件的错误机制。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: