日期:2014-05-16 浏览次数:20776 次
一个让用户满意的程序不是不会出错,而是出错之后仍然给用户留下一丝温馨的感觉;
一个远见卓识的程序猿,肯定会给自己留条后路来保持程序的扩展性;
一个少挨骂维护猿的程序,肯定是针对错误有着良好的处理;
无论你是用户还是负责人;无论你是开发人猿还是维护人猿;
处理好程序中的错误,彰显程序的美好的一面是我们共同的愿望,好比一只孔雀,把自己美丽的一面展现出来,既满足了别人也舒适了自己,何乐为不为?
好吧,意识到错误处理的魅力后,就让我们走进Ajax的容错处理!
一、错误的通用设置
说到通用设置,第一反应就是去配置文件中设置。
<!--错误页配置--> <customErrors mode="On" defaultRedirect="~/Error.aspx"></customErrors>
除了在Web.config文件中修改customErrors配置节的属性为On外,还需要在aspx页面的ScriptManager(脚本统一管理)添加相应的属性。<%--错误页配置--%> <asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="true"> </asp:ScriptManager>
如果从程序的整体来看,web.config文件好比是公路上的路标,指示每部程序(相当于是一部car)怎么走;每一个aspx页面相当于一个收费站,如果想要通过页面显示出既定的错误,那么就需要得到收费站的管卡,而页面中的ScriptManager,俗称脚本统一管理器,AllowCustomErrorsRedirect的属性就是起到管卡的作用。
经过上面两道管卡,我们就可以在处理程序的界面中,添加抛出异常的代码就可以将已经定义好错误处理页Error.aspx显示出来了,配置文件中要注意路径的填写。
protected void Button1_Click(object sender, EventArgs e) { //抛出异常 throw new Exception(); }
二、自定义错误
如果一个程序没有自定义的错误,谈何程序的魅力?在程序中添加自定义错误,既可以给客户以舒适(至少不反感)的体验还可以给开发和维护人员以相应的提示。这才算是一种比较好的做法。
那么,在Ajax中怎么自定义错误呢?
简单的总结了两种方法,一种是从客户端发起的错误处理,另一种是在服务器端定义的错误处理。
1、从客户端发起的错误处理
首先,关掉ScriptManager的AllowCustomErrorsRedirect属性,然后在它的OnAsyncPostBackError属性中指明异步刷新的事件。
<%--AllowCustomErrorsRedirect属性设置为false,配合后台的自定义错误使用--%> <asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="false" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError"> </asp:ScriptManager>
然后,在页面的C#后台添加自定义的错误信息和异步刷新事件中要显示的错误信息。protected void Button1_Click(object sender, EventArgs e) { //自定义错误处理,配合web.config文件中的错误配置节点customErrors(设置为on的时候才生效,同时还要制定错误页)和AllowCustomErrorsRedirect(是否允许customErrors)使用 throw new Exception("Custom Error!"); } //异步刷新出现错误时,触发的事件 protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e) { //客户端接受到的错误的信息 ScriptManager.GetCurrent(this).AsyncPostBackErrorMessage = e.Exception.Message; }
第三部,在前台界面中编写Ajax的核心技术支持——javascript代码
<script type="text/javascript" language="javascript"> //endRequest相应Request时最后触发