抛开Try Catch 不说(这种地球人都知道),ASP.NET提供了四种错误处理机制,分别为:
Page_Error, ErrorPage,Application_Error,<customErrors>四种,如果加上Try Catch就算五种吧,可以理解为:一种局部变量---Try Catch ,两种页面级变量:Page_Error, ErrorPage,两个全局变量:Application_Error,customErrors,在这里提前说一下他们的执行顺序,从高到低排序:
Page_Error
> ErrorPage > Application_Error > <customErrors>下面将会按照这四种执行的高低顺序做一下详细的使用介绍。
首先:Page_Error 大家一看这个词语,估计大体上就明白了什么意思了,就是页面级处理程序,A页面出错了,A的Page_Error处理A的错误,B页面出错了,B的Page_Error处理B的错误,大家可以喝try catch一样理解,只是这个比try catch范围大了一些,一个方法里面有try catch,这个方法出错了,就在catch中处理,一个页面出错了,就在Page_Error中处理。
使用方法:在页面里面加入此方法即可
protected void Page_Load(object sender, EventArgs e)
{
//错误后的操作如:写日志,给用户输出自己期望的错误信息
}
优点:处理比较灵活,对于经常出错的页面,直接添加就可以了。
缺点:他属于页面级变量,更多的时候,我们不知道那些页面会出错,所以如果使用这种处理方法,需要每个页面都写,比较麻烦
第二:ErrorPage 其实ErrorPage 和Page_Error非常类似,大家可以看做是前台js处理,也是页面级处理程序,但是在这里不推荐使用,可能是因为习惯问题,个人感觉ASP.NET比asp最方面的地方就是代码后置,既然这样,为什么能写在后台的东西,非要写在前台呢?呵呵,。。当然,这个也属于个人习惯,很多东西,必须写在前台,那是没办法的事情,好了扯远了,下面看一下他的用法
使用方法:在页面里面加入此方法即可
<script language="C#" runat="server">
protected void Page_Load(object sender, EventArgs e)
{
this.ErrorPage = "ErrorPage.htm";
}
</script>
优点: 请参考Page_Error
缺点: 请参考Page_Error
第三: Application_Error 看到Application_Error,熟悉ASP.NET的人一眼就知道,它属于Global.asax中的全局变量,没错,它就是一个全局处理机制,我们不仅要问,Application_Error和customErrors都是全局变量,他们有什么不一致呢?机理上的不一致在这里就不说了,主要说一下用法上的不一样,customErrors只能让你跳到到你想要的页面,不能记录错误信息,它会自动处理掉,Application_Error可以接收和处理这些错误信息
使用方法:在Global.asax中处理,Application_Error方法Global会自动就生成了
protected void Application_Error(object sender, EventArgs e)
{
Exception ex = this.Context.Server.GetLastError();
if (ex!=null)
{
this.Context.Server.Transfer("/Error.aspx");
//可以再这里写日志,也可以再Error写日志,并且展示给用户一个友好的界面
this.Context.Response.Clear();
}
}
优点:全局变量,在这里写一次,所有的页面出错了,都会自动跳转到错误页面,省时省力,并且可以记录相关错误
缺点:全局变量的确定大家都明白的,需要消耗一部分的性能
第四: customErrors 其实customErrors就是Web.config的一个配置项,在这里配置以后,页面出错后,会自动跳转到相应的错误页面,这种相信大家都用过非常频繁了。在这里就简单介绍一下了
使用方法:
<system.web>
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="Error403.htm" />
<error statusCode="404" redirect="Error404.htm" />
</customErrors>
</system.web>
优点:对于那些页面连接不存在,或者程序出错,给用户以友好的提示,这个用的是很多的
缺点:没法记录具体错误信息
分享到:
相关推荐
首先,ASP.NET验证控件默认的错误提示样式相对单一,通常以红色文本的形式呈现,这可能不符合所有设计需求。其次,验证错误消息的位置通常是固定的,无法灵活调整。再者,当错误消息较长时,不仅占据页面空间,还...
6. **ASP.NET架构与生命周期**:深入理解ASP.NET页面生命周期和应用程序生命周期,对于优化性能和调试错误至关重要。书中会介绍请求处理流程、页面初始化、回发与PostBack、状态管理等内容。 7. **Web服务与API**:...
ASP.NET和WinForm是两种广泛使用的Microsoft开发框架,它们在构建Web应用和桌面应用时提供了丰富的功能。在当今全球化背景下,让应用程序支持多种语言(国际化)变得至关重要。下面,我将详细阐述这两种技术如何实现...
在这个“ASP.NET.2.0服务器控件开发心得”中,我们可以期待学习到开发者在实际项目中积累的经验和技巧,尤其是在服务器控件开发方面的深入理解。 服务器控件是ASP.NET的核心特性之一,它们是网页交互和业务逻辑处理...
这本书旨在帮助开发者们深入理解ASP.NET 2.0的核心概念、架构和开发技巧,通过丰富的实例和实践心得,提升读者在该领域的专业技能。 ASP.NET 2.0是微软.NET Framework的一个关键组成部分,用于构建动态网站、web...
5. **路由**:ASP.NET中的URL路由允许自定义URL结构,提高用户体验并支持SEO优化。 6. **身份验证和授权**:ASP.NET提供内置的安全机制,如 Forms Authentication 和 Role-Based Authorization,用于保护应用程序免...
**ASP.NET 源码解析:EnjooSite CMS&BLOG 快乐建站系统** EnjooSite CMS&BLOG 是一款基于 ASP.NET 技术构建的内容管理系统(CMS)和博客平台,它提供了灵活的网站建设和管理功能。该系统的核心设计理念是让用户能够...
《使用Kendo UI Mobile与ASP.NET Web API构建移动应用》不仅是一本技术指南,更是实践者的心得分享。通过本书的学习,开发者不仅可以掌握具体的开发技巧,还能深刻理解如何构建高质量的移动应用。无论是初学者还是有...
在项目中,可能会有自定义的错误页或全局错误处理程序。 9. **部署和配置**:ASP.NET项目通常部署在IIS服务器上,配置文件(web.config)可以用来调整应用程序的行为,如设置连接字符串、应用程序池、权限等。 10....
- **社区参与**:鼓励加入ASP.NET开发社区,与其他开发者交流心得,共同进步。 #### 结语 《ASP.NET深入编程(C#)》不仅是一本技术书籍,更是ASP.NET开发者进阶道路上的指南针。它以丰富的实例、详尽的解释,引导...
4. **Web.Config**:这是ASP.NET应用的配置文件,包含了应用程序的设置,如数据库连接字符串、身份验证模式、错误处理等关键信息。开发者可以在这里自定义应用程序的行为。 5. **Default.aspx.cs**:这是Default....
《烟雨逍遥个人blog系统 v2.1.1 ASP源码》是一款基于ASP技术构建的个人博客系统,专为喜爱编程、热衷分享技术心得的个人用户设计。该系统具有简洁明了的界面,功能实用且易于操作,是搭建个人知识分享平台的理想选择...
5. **开发技术**:DXBBS大侠论坛基于.NET平台开发,使用C#或VB.NET作为编程语言,利用ASP.NET技术构建Web应用,这表明开发团队对微软的开发工具和技术栈有深入理解。ASP.NET提供了丰富的控件和功能,使得开发高效且...
【PJBlog2 流行纪念册】是一款基于ASP.NET技术构建的个人博客系统,它以其易用性、灵活性和丰富的自定义功能深受用户喜爱。PJBlog2作为一个开源项目,为那些希望搭建个人在线日记或者分享心得的用户提供了一个简单且...
11. **JavaScript交互**:考虑到标签中有JavaScript,可能还会涉及到如何在C#应用中集成JavaScript,比如使用ASP.NET的PageMethods、WebMethod或AJAX技术进行前后端交互。 这些内容都是构成C#编程能力的基础,通过...