通常情况下,我们在写ASP.NET程序的时候,会经常遇到如何处理错误处理机制的问题.可以说一个良好的错误处理机制是衡量Web应用程序好坏的一个重要标准.

下面将介绍四中错误处理机制:
1.使用Web.Config的<customErrors>配置项
例子:
<?xml version="1.0"?>
    <configuration>
        <system.web>
            <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">  //指定了开启错误处理机制,并指定到固定页面处理错误提示
                <error statusCode="403" redirect="Error403.htm" /> 
                <error statusCode="404" redirect="Error404.htm" />  
            </customErrors>
        </system.web>
    </configuration>

2.使用Global.asax中的Application_Error事件处理方法
在这些事件当中,有一个属于Application范畴的与错误相关的事件——Error,而对应的事件处理方法就是Application_Error了。顾名思义,这个事件处理方法在应用程序级别错误发生的时候就会被调用,因此你可以在这个方法中添加代码来对错误进行处理,如下所示:

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

以上这两种错误处理方法都可以说是全局性的,一个源自应用程序配置文件,一个则是必须放在应用程序根目录下的Global.asax文件的事件处理方法。与全局相对的就是局部,所以我们很自然的就会想:有没有应用于局部——某个页面的错误处理机制呢?答案是“有的”,而且还有两种————使用ErrorPage属性以及使用Page_Error事件处理方法。

3.使用ErrorPage属性处理错误机制
你几乎可以在任何时候设置ErrorPage属性,从而确定页面发生错误的时候会重定向至哪个页面
<script language="C#" runat="server">
    protected void Page_Load(object sender, EventArgs e) {
        this.ErrorPage = "ErrorPage.htm";
        
    }   
</script>

4.使用Page_Error事件处理方法处理错误机制
与Application_Error事件处理方法是很类似的,只不过被触发的时机不同而已。
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()方法的话,仍然会引发优先级较低的错误处理,也就是说ErrorPage属性等错误处理机制仍然会发挥作用,这样就得不到你想要的结果了。这种情况对于Application_Error事件处理方法也是如此。顺序是排好了,但是顺序却不是最重要的问题,甚至可以说是没有太多意义的问题,因为在很多情况下,你可能并不会混合使用这四种处理机制。我想,最重要的问题还是在如何选用这些错误处理机制上。对于这个问题,希望有经验的朋友能够谈谈看法。

转载于:https://www.cnblogs.com/ufo0303/archive/2006/09/20/509142.html

ASP.NET的错误处理机制相关推荐

  1. ASP.NET的错误处理机制之一(概念)

    对Web应用程序来说,发生不可预知的错误和异常在所难免,我们必须为Web程序提供错误处理机制.当错误发生时,我们必须做好两件事情:一是将错误信息记录日志,发邮件通知网站维护人员,方便技术人员对错误进行 ...

  2. ASP.NET的错误处理机制之二(实例log4net)

    一.log4net下载:http://logging.apache.org/log4net/download_log4net.cgi 二.web.config配置如下: 1 <?xml vers ...

  3. .net错误处理机制

    .net错误处理机制 让我们想想,ASP.NET为我们提供了几种错误处理机制?如果同时使用他们是不是有一定的优先级?.NET提供了四种错误处理机制,它们有一定的优先级顺序:Page_Error事件&g ...

  4. Go语言的错误异常处理机制及其应用

    一.背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err = func(xx) if err != nil {//do sth. to tac ...

  5. ASP.NET页面错误处理

    ASP.NET页面错误处理 ASP.NET应用可以再代码中利用异常捕获来处理错误(try.catch)但是应用出现的所有错误,都用异常捕获来处理是一种不良的编程习惯.try.catch使用简单,但是过 ...

  6. SpringBoot之错误处理机制

    文章目录 1.SpringBoot默认的错误处理机制 2.错误处理原理 (1)DefaultErrorAttributes (2)BasicErrorController:处理默认的/error请求 ...

  7. ASP.NET常见错误,原因及解决方法(2003版)_不断更新.....

    [标题]             ASP.NET常见错误,原因及解决方法[错误提示]    异常详细信息: System.Net.WebException: 请求因 HTTP 状态 401 失败:Un ...

  8. Vue.js@2.6.10更新内置错误处机制,Fundebug同步支持相应错误监控

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: Fundebug 的 JavaScript 错误监控插件同步支持 Vue.js 异步错误监控. Vue.js 从诞生至 ...

  9. Laravel 5.5 的错误异常处理机制以及应用实例

    一.前言 我们在开发项目中,难免会因为逻辑上的失误而报错,这些报错的展现形式也就是框架封装好的异常处理机制.在项目上线之前,我们还可以根据框架提供的报错信息来锁定错误代码的位置.但是项目上线之后我们是 ...

最新文章

  1. Dockerfile文件命令详解
  2. [BZOJ 4819] [SDOI 2017] 新生舞会
  3. Bootstrap(8) 路径分页标签和徽章组件
  4. 日志审计产品(转载)
  5. LeetCode meituan-003. 小美的跑腿代购(排序)
  6. Acitivity创建与配置
  7. splines | 多项式回归和样条曲线回归
  8. CentOS6上安装Flash Player
  9. python selenium自动化框架_一文讲透!实现一个Python+Selenium的自动化测试框架如此简单!...
  10. 国产操作系统(Linux)技术流派
  11. 线性代数第6章答案(仅供参考!!!)
  12. ssm毕设项目班级网站45nk3(java+VUE+Mybatis+Maven+Mysql+sprnig)
  13. dlna移植android系统,android系统的dlna开发
  14. NOI 2017 滚粗记
  15. c语言将浮点变成字符串,c语言将浮点型数据转换成字符串
  16. 笔记本电脑黑屏后如何重装系统,解决笔记本电脑黑屏
  17. unity 加载关卡_Unity5.0_Application.isLoadingLevel 正在加载关卡_软件教程_资源库
  18. 鹤林全集·怡情枫林 | 第二篇——励志创造奇迹
  19. 如何减少mac动画_如何在Mac上使用减少运动功能减少桌面动画
  20. strstr函数详解 看这一篇就够了-C语言(函数讲解、函数实现、使用用法举例、作用、自己实现函数 )

热门文章

  1. stl的complex(二)
  2. HDU2045 不容易系列之(3)—— LELE的RPG难题(递推)
  3. HDU2091 空心三角形
  4. C 语言Hello world
  5. Linux基础命令-mkdir
  6. mybatis的快速入门
  7. WIN7 数据源配置问题(32位64位)
  8. (译)Web地图设计模式——ArcGIS Server
  9. 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
  10. python常用英文单词怎么写,Python常用英文单词