关于Asp.net ajax下的异常处理

  最近做一个项目时,大量应用了Asp.net ajax,由于在UpdatePanel这种异步更新模式下,后台处理时所发生的异常并不会导致客户端的界面发生变化,而是直接以alert的方式弹出异常信息,所以我就偷了个懒,在后台检测到不符合要求的输入之类的情况下,就直接把错误提示信息throw一下就好了。但现在发现问题了,就是这样一来,如何处理其它的未处理异常?
为了不至于全部重新来修改一遍,我考虑了这几种处理方式:
1.在web.config的customErrors配置中设置当出现未处理的异常时转到指定页;
2.在Global.asax的Application_Error事件处理程序中,将异常信息输出到指定的页面显示给客户端;
3.由于我所有的页面都是继承自一个MyPage类(它又继承自System.Web.UI.Page),所以也可以考虑在MyPage的Page_Error事件处理程序中,来将异常信息输出到指定的页面显示给客户端。

但是,第一和第三种方法,会在出现异常时直接转到指定页,从而达不到直接alert错误提示的效果;而第二种方法,倒是不会管这种异步的程序异常,不会把页面重定向,但在Application_Error里面用Server.GetLastError()方法捕获的异常很多时候又不是直接的包含了友好错误信息的那个异常,而是它所导致的异常,比如经常就会导致System.Web.HttpUnhandledException异常。所以这种方式也不理想。

因此,想和园子里各位高人探讨一下如何在利用了Asp.net ajax这种异常处理的便捷性的时候,能兼顾处理好其它的未处理异常(比如Page_Load里!IsPostBack的代码中出现的异常)。暂借首页宝地一用,希望能听到让人豁然开朗的高见。
posted @ 2008-04-25 17:50 戒焦戒躁 阅读(2218) 评论(12)  编辑 收藏 网摘 所属分类: Asp.net

  回复  引用  查看    
#1楼2008-04-26 01:07 | Cat Chen      
你可以在客户端拦截这个Exception的,看看Jeffrey Zhao的帖子吧。
  回复  引用    
#2楼2008-04-26 09:24 | bangbang[未注册用户]
可以自已做一个层,当异常出现的时候,弹出层。传统的alert效果是不好。自己做的层,可以实现很多效果。
  回复  引用  查看    
#3楼2008-04-26 09:45 | 坚决不用UpdatePanel      
http://www.cnblogs.com/Emoticons/yoyocici/223852199.gif" alt="" />
  回复  引用    
#4楼2008-04-27 10:41 | 1111111195ee[未注册用户]
拜读
互联网创业下载中心:
http://down.163k.com
还有这个:
http://biz.163k.com

  回复  引用  查看    
#5楼2008-04-27 19:58 | 镜涛      
--引用--------------------------------------------------
Cat Chen: 你可以在客户端拦截这个Exception的,看看Jeffrey Zhao的帖子吧。
--------------------------------------------------------

  回复  引用  查看    
#6楼[楼主]2008-04-28 08:30 | 戒焦戒躁      
可能是我没说明白,我的意思是,我的项目中,有很多页面采用了asp.net ajax,也有些没有用,如果在后台ajax处理时抛出异常,我不需要作其它操作,就能很好地把错误提示信息友好地alert给用户,但这个便捷性是与通常的在出现未异常时转到指定页的方法是相矛盾的。我是想如何在不牺牲这种便捷性的同时,在出现其它的未处理异常(比如,在没有使用asp.net ajax的页面中出现的异常)时,能转到指定的错误提示页面。
  回复  引用    
#7楼2008-05-13 04:34 | Evan Jin[未注册用户]
updatepanel的异常不会引发Application_Error,如果真的需要捕获,在ScriptManager的AsyncPostBackError事件中捕获
  回复  引用    
#8楼2008-06-05 16:24 | dnvmyd[未注册用户]
我常常碰到你说的这样的问题!

  回复  引用  查看    
#9楼2009-03-16 08:58 | 要有好的心情      
你可以在客户端拦截这个Exception的:拦截不到吧。

  回复  引用  查看    
#10楼2009-03-16 09:25 | 要有好的心情      
页面上方法 label或者literal,将出错信息赋值给label,然后在 客户端 隔 4、5秒后隐藏。
  回复  引用    
#11楼2009-04-09 11:32 | HelloJavaScript[未注册用户]
这个问题我也遇到了,求解喔
  回复  引用  查看    
#12楼2009-04-26 21:11 | 要有好的心情      
我用RegisterItem搞定



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1171397




相关文章:

相关链接: