知识大全 ASP.NET的错误处理机制

Posted 机制

篇首语:种子牢记着雨滴献身的叮嘱,增强了冒尖的勇气。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET的错误处理机制相关的知识,希望对你有一定的参考价值。

ASP.NET的错误处理机制  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  对于一个Web应用程序来说 出错是在所难免的 因此我们应该未雨绸缪 为可能出现的错误提供恰当的处理 事实上 良好的错误处理机制正是衡量Web应用程序好坏的一个重要标准 试想一下 当用户不小心在浏览器输入了错误的URL或者当用户提供了一些信息导致程序出错的时候 如果我们没有对这些情况进行处理 而是任由 或是 的错误页面甚至出错的堆栈信息呈现在用户面前 这无疑会把一些用户给吓跑 所以 在我们开发Web应用程序的时候 应该对错误处理机制有充分的了解

  让我们回到ASP NET上来 先提两个问题让大家思考一下 ASP NET为我们提供了几种错误处理机制呢?如果同时采用了几种错误处理机制 它们之间是否存在一定的优先级呢?带着这个问题 我们先来看一下我们最常见的Web Config文件

  <?xml version= ?>   <configuration>   <system web>   <customErrors mode= On defaultRedirect= >   <error statusCode= redirect= />   <error statusCode= redirect= />   </customErrors>   </system web>   </configuration>

  对于<customErrors>这个设置项 我想无需多言了 详情可以参考MSDN的 第一种错误处理机制——使用Web Config的<customErrors>配置项应该是大家最常用的   接着 我们再看另外一个也很常用的文件 Global asax 提到这个文件 大家想到了什么呢?对 就是跟两大Web应用程序对象(Application Session)相关的事件了 在这些事件当中 有一个属于Application范畴的与错误相关的事件——Error 而对应的事件处理方法就是Application_Error了 顾名思义 这个事件处理方法在应用程序级别错误发生的时候就会被调用 因此你可以在这个方法中添加代码来对错误进行处理 如下所示

  protected void Application_Error(object sender EventArgs e)    Exception objErr = Server GetLastError() GetBaseException();   Response Write( Error: + objErr Message);   Server ClearError(); 

  在这里 大家要注意最后一句代码的使用Server ClearError() 为什么要使用这句代码呢?如果不用又会怎样呢?在这里我又先卖个关子 好了 第二种错误处理机制——使用Global asax中的Application_Error事件处理方法也登台亮相了

  以上这两种错误处理方法都可以说是全局性的 一个源自应用程序配置文件 一个则是必须放在应用程序根目录下的Global asax文件的事件处理方法 与全局相对的就是局部 所以我们很自然的就会想 有没有应用于局部——某个页面的错误处理机制呢?答案是 有的 而且还有两种————使用ErrorPage属性以及使用Page_Error事件处理方法 对于第一种机制 你几乎可以在任何时候设置ErrorPage属性 从而确定页面发生错误的时候会重定向至哪个页面 对于第二种机制而言 它与Application_Error事件处理方法是很类似的 只不过被触发的时机不同而已 以下是具体的两个例子

  <script language= C# runat= server >   protected void Page_Load(object sender EventArgs e)    this ErrorPage = ;

    </script>

  protected void Page_Error(object sender EventArgs e)    Exception objErr = Server GetLastError() GetBaseException();   Response Write( Error: + objErr Message);   Server ClearError(); //同样要注意这句代码的使用 

  至此 四种错误处理机制已经悉数登场 是时候给它们排个名次了 从优先级高到低排序 Page_Error事件处理方法 > ErrorPage属性 > Application_Error事件处理方法 > <customErrors>配置项 虽然排序是这样 但是这个排序之间又有微妙的关系 首先 要让ErrorPage属性能够发挥作用 <customErrors>配置项中的mode属性必须设为 On 其次 虽然Page_Error事件处理方法排在最前面 但是 如果少掉了Server ClearError()方法的话 仍然会引发优先级较低的错误处理 这种情况对于Application_Error事件处理方法也是如此 顺序是排好了 但是顺序却不是最重要的问题 甚至可以说是没有太多意义的问题 因为在很多情况下 你可能并不会混合使用这四种处理机制 我想 最重要的问题还是在如何选用这些错误处理机制上 对于这个问题 希望有经验的朋友能够谈谈看法

cha138/Article/program/net/201311/12225

相关参考

知识大全 ASP.NET页面错误处理

ASP.NET页面错误处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &

知识大全 ASP.NET中的错误处理支持

ASP.NET中的错误处理支持  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASPNET具有一

知识大全 ASP.NET错误处理和程序优化

ASP.NET错误处理和程序优化  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 ASP.NET自定义错误处理页面的添加

ASP.NET自定义错误处理页面的添加  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  自定义错误

知识大全 ASP.NET定制简单的错误处理页面

ASP.NET定制简单的错误处理页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &n

知识大全 ASP.net MVC自定义错误处理页面

ASP.netMVC自定义错误处理页面  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPN

知识大全 ASP.NET生成eurl.axd Http异常错误处理

ASP.NET生成eurl.axdHttp异常错误处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 ASP.NET入门教程 1.3.9 错误和异常处理

ASP.NET入门教程1.3.9错误和异常处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 浅谈ASP.NET内部机制(三)

浅谈ASP.NET内部机制(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  大家已经在知道在

知识大全 浅谈ASP.NET的内部机制(一)

浅谈ASP.NET的内部机制(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  前言当一个Ht