asp.net和ajax未捕获异常处理机制
asp.net和ajax未捕获异常处理机制
这里的异常处理主要是指开发人员在业务代码中未捕获的异常。未捕获异常处理的目的:
1:在应用程序域级别对异常类型进行处理;
2:在处理的基础上,可以将错误信息记录日志;
3:以友好的方式提示最终用户页面发生了错误。
.NET提供了四种错误处理机制,它们有一定的优先级顺序:Page_Error事件>ErrorPage属
性>Application_Error事件>
<customErrors>配置项。下面分别介绍这四种错误处理机制的用法。最后介绍ajax如果捕获服务器端代码抛出的异常。
1:Page_Error事件
Page_Error 事件提供一种捕获在页级别出现的错误的方法。
protected void Page_Error(object sender, EventArgs e)
{
Exception objErr = Server.GetLastError().GetBaseException();
Response.Write("Error:" + objErr.Message);
Server.ClearError();
}
2.ErrorPage属性
要让ErrorPage属性能够发挥作用,<customErrors>配置项中的mode属性必须设为"On"。
<customErrors mode="On" defaultRedirect="GenericErrorPage.htm">
<error statusCode="403" redirect="NoAccess.htm" />
<error statusCode="404" redirect="FileNotFound.htm" />
</customErrors>
如果Page_Error和ErrorPage都存在,当抛出Exception时,页面执行顺序是怎样的呢?页面会先执行Page_Error事件处理
函数,如果Page_Error()事件中调用函数Server.ClearError()清除异常信息,则不会跳转到ErrorPage属性指定页面;
如果没有调用Server.ClearError(),Exception信息会继续向上抛,页面会跳转到ErrorPage指定页面。这也就证明了优先
级顺序:Page_Error事件>ErrorPage属性。
这里需要指出,如果你没指定ErrorPage属性,则自动导向到GenericErrorPage.htm。
3.Application_Error事件
相关文档:
首页:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head ......
此处提供的代码用来实现当asp.net页面中的某个Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.
//ASP.NET中防止页面多次提交的代码:javascript< script language="javascript"> < !-- function disableOtherSubmit() {
var obj = event.srcElem ......
原帖地址:http://www.wangchao.net.cn/bbsdetail_572426.html
简介
有许多聪明的办法可以解决HTTP协议的无状态问题,例如对每个请求重复发送应用程序数据包、使用HTTP认证机制来将请求映射到特定的用户、使用Cookie来存储一系列请求的状态等。在ASP.net技术中提供了 ......