ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ASP.NET异常处理

ASP.NET异常处理

原创 Linux操作系统 作者:iDotNetSpace 时间:2010-04-07 14:21:15 0 删除 编辑

异常捕获,是我们在Coding过程中必须要考虑的。除了使用Try Catch语句之外,更积极的策略是,对于由输入可能引发的异常在输入时就进行验证。

ASP.NET开发中,可以把异常分成几个层次:过程级别/页面级别或类级别/应用程序级别。我们通常会在过程级别就采取措施来捕获异常并处理,以避免

异常向上扩散。过程级别的异常是会向上冒泡至页面级别,页面级别的异常也会冒泡至应用程序级别。

在ASP.NET的架构中,对于页面级别的异常和应用程序级别的异常都提供了捕获机制。

  • 页面级别可以通过Page_error事件处理过程进行捕获:

public void Page_Error(object sender,EventArgs e)
{
 Exception bjErr = Server.GetLastError().GetBaseException();
 string err = "Error Caught in Page_Error event



" +
   "
Error in:" + Request.Url.ToString() +
   "
Error Message:" + objErr.Message.ToString()+
   "
Stack Trace:
" +
                   objErr.StackTrace.ToString();
 Response.Write(err.ToString());
 Server.ClearError();
}

 

  • 应用程序级别可以通过Application_error事件处理过程进行捕获:

protected void Application_Error(object sender, EventArgs e)
{
 Exception bjErr = Server.GetLastError().GetBaseException();
 string err = "Error Caught in Application_Error event\n" +
   "Error in:" + Request.Url.ToString() +
   "\nError Message:"+ objErr.Message.ToString() +
   "\nStack Trace:"+ objErr.StackTrace.ToString();
 EventLog.WriteEntry("Sample_WebApp",err,EventLogEntryType.Error);
 Server.ClearError();
 //additional actions...
}

 

注意:Server.ClearError()的作用是把异常从当前层次中销毁,避免继续上向扩散。

 

如果在页面级别和应用程序级别,异常还是没有被捕获。最终将引发应用程序错误,这时ASP.NET运行时会采取最后一个步骤来使得程序

异常能以尽可能友好的方式通知客户端使用者,那就是检查Web.config中配置节,如果配置了错误页,就自动把响应

导向所配置的错误页。

http://hostName/applicationName/errorStatus.htm" mode="On">

注意:mode属性有三个可选值:

On:未被处理的异常将用户重定向到指定的 defaultRedirect 页。此模式主要用于生产。
Off:用户收到异常信息而不是被重定向到 defaultRedirect 页。此模式主要用于开发。
RemoteOnly:只有在本地计算机上访问该站点的用户(通过使用 localhost)才能收到异常信息。所有其他用户都被重定向到 defaultRedirect 页。此模式主要用于调试。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/12639172/viewspace-631506/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5766219