首页 > Linux操作系统 > Linux操作系统 > asp.net错误处理的三种方法
以前有过一篇博文,主要是出错时调至错误页面,然后将当前出错的页面存入Session,然后执行刷新等操作,该机制主要用于程序员自己控制错误,但是有些错误和异常是程序员无法控制的,比如:
这些错误的结果都会导致无法为客户端提供服务,作为程序员,有责任将用户请求重定向至自定义的错误页面;今天学习了一下,做个记录:
一、

代码
<!--Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/--> <system.web>
<customErrors mode="RemoteOnly"defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
customErrors>
system.web>
mode属性有三个,分别为:
这三个属性是大小写敏感的,第一个字母必须为大写。
二、Application_Error事件
当异常未被捕获的时候,ASP.NET就会触发HttpApplication类的Error事件,可以通过Global.asax文件的Application_Error方法来订阅该事件。

代码
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->
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();
}
执行完毕后应该调用ClearError方法。
三、ErrorPage属性
在页面的处理过程中,可以在任何时候设置或者获取Page.ErrorPage属性,能够通过程序的方式指定异常未被捕获的时候,ASP.NET会将客户端重定向至那个页面。这个有两种设置方法,一个是直接在page属性里面设置,为某个页面设置统一的错误页面。
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--><%@ Page Language="C#" ErrorPage="~/Default2.aspx" AutoEventWireup="true"CodeFile="Default.aspx.cs" Inherits="_Default" %>
也可以在程序中动态的设置,加入页面有n多button可以为每一个button设置特定的ErrorPage
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> protected void btnTest_Click(object sender, EventArgs e)
{
this.ErrorPage = "Default2.aspx";
}
该属性是和
在异常为被捕获的时候,如果这个属性值为null(没有设置ErrorPage),那么HttpApplication.Error事件。如果HttpApplication.Error没有订阅错误事件,那么程序会去找
优先级:ErrorPage属性、Application_Error,
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-664105/ ,如需转载,请注明出处,否则将追究法律责任。