[置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)
无论在Window应用程序,还是Web应用程序以对用户友好的方式显示运行时的异常都是很有必要,尤其对于可能有很多不确定因素导致异常的Web应用程序;在传统的Web开发中,处理异常的方式——设计专门一个页面作为出现异常后跳转的页面,对于这个功能,ASP.net以及IIS有内建支持。而对于Ajax类型的应用程序来讲,一个页面就是一个程序,如果贸然将用户引导至另一个页面(即另一个程序),显得有些唐突。
但是Ajax程序也可以实现以上的异常处理方法(接下来的介绍中会提到);Asp.Net Ajax有一套自己的针对异步回调发生异常的处理机制。
本篇博客将通过一个实例来介绍:Ajax程序:处理异步调用中的异常——使用Asp.Net Ajax内建的异常处理方法
1,引题
CatchError.aspx中:
添加控件ScriptManager、UpdatePanel(两者配合实现异步);UpdatePanel中添加一个按钮Button,此Button的Onclick响应Button1_Click事件;
(注:AllowCustomErrorsRedirect属性,默认值为true,表示在异步请求发生异常时是否沿用Web.config中customErrors节中的设定,Web.config中customErrors节中可以指定应用程序级别的错误处理页面(对于Ajax程序,尽量避免这种处理异常的方式(跳转到另一页面的方式));这种方式的简单例子如下:
1_CustomRedirect.aspx中:
页面效果如下:
1_CustomRedirect.aspx.cs中:
Web.Config中:
Error.aspx中:
运行:
点击按钮“Button”,跳转到Error.aspx页面,如下:
弹出如下页面,页面信息如下:
)
2,下面正式进入主题
(1)CachError.aspx.中:
(注:OnAsyncPostBackError="ScriptManager1_AsyncPostBackError":ScriptManager的AsyncPostBackError事件的处理函数为ScriptManager1_AsyncPostBackError()。AsyncPostBackError事件将在异步回送引发异常时触发。在该事件的处理函数中,我们可分析异常产生的原因并根据需要过滤敏感信息)
(2)CachError.aspx.cs中,Button1_Click()事件:
CachError.aspx.cs中,ScriptManager1_AsyncPostBackError()事件:
(注:AsyncPostBackErrorMessage属性:表示了异步回送过程中发生的异常将显示出的信息)
(3)IE中运行:点击下面按钮Button:
运行结果如下:
(中运行,都没有运行成功,不知道为什么,也没有研究出来,最后我猜测应该是浏览器的原因)
3,思考
异常处理完了,但是却看似不是很友好,如何做出友好的异常处理显示呢?
使其友好,可如下:
(1)在客户端CachError.aspx.cs中添加如下Javascript代码:
(注:Sys.WebForms.PageRequestManager.getInstance():获得PageRequestManager对象的实例;为其endRequest事件添加了函数function(sender,e){…},在该处理函数中,我们即可访问到异常的详细信息)
(2)运行:点击下面按钮Button:
运行结果如下:
4,总结
本篇博客通过一个实例介绍了:Ajax程序处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法),
通过本博客您还可以了解:ScriptManager的AsyncPostBackError事件、AsyncPostBackErrorMessage属性;PageRequestManager对象及其endRequest事件。
[置顶] Ajax程序:处理异步调用中的异常(使用Asp.Net Ajax内建的异常处理方法)的更多相关文章
- jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法
jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法 在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们 ...
- [知识库:python-tornado]异步调用中的上下文控制Tornado stack context
异步调用中的上下文控制Tornado stack context https://www.zouyesheng.com/context-in-async-env.html 这篇文章真心不错, 非常透彻 ...
- 循序渐进做项目系列(2):最简单的C/S程序——消息异步调用与消息同步调用
上篇博客 循序渐进做项目系列(1):最简单的C/S程序——让服务器来做加法 实现了一个最简单的C/S程序,即让服务器来做加法.当时为了通俗易懂采用了消息异步调用的方式.今天我们要采用消息同步调用的方式 ...
- 如何在Spring异步调用中传递上下文
以下文章来源于aoho求索 ,作者aoho 1. 什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步 ...
- HttpContext在多线程异步调用中的使用方案
1.在线程调用中,有时候会碰到操作文件之类的功能.对于开发人员来说,他们并不知道网站会被部署在服务器的那个角落里面,因此根本无法确定真实的物理路径(当然可以使用配置文件来配置物理路径),他们唯一知道的 ...
- Effective JavaScript Item 63 注意异步调用中可能会被忽略的异常
异常处理是异步编程的一个难点. 在同步的代码中,异常可以非常easy地通过try catch语句来完毕: try { f(); g(); h(); } catch (e) { // handle an ...
- 使用domain模块捕获异步回调中的异常
和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难. 首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中. 为什么? 答案是 ...
- node.js 使用domain模块捕获异步回调中的异常
和其他服务器端语言相比,貌似node.js 对于异常捕捉确实非常困难. 首先你会想到try/catch ,但是在使用过程中我们会发现并没有真正将错误控制在try/catch 语句中. 为什么? 答案是 ...
- [置顶] Ruby,Scala和JavaScript中的函数式编程(一)
函数式编程(英语:Functional programming)或者函数程序设计,又称泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免使用程序状态以及易变对象.函数编程语言最重要的 ...
随机推荐
- java基础学习总结01
在过去的一周我们先学习了JAVA的一些基础知识和基础语法,基础知识包括:指令.程序.计算机语言.机器语言.高级语言的概念和特点,java的概念.平台.组建等,以及代码的编译过程,代码的开发流程.基础语 ...
- TIFF6 Packbit algorithm
“Packbits” from ISO 12369 参考TIFF 6.0 Specification,点击TIFF, Version 6.0: @Section 9: PackBits Compres ...
- css清除浮动方法大全
清除浮动这个问题,做前端的应该再熟悉不过了,也是每一个web前台设计师 必须掌握的机能. 为什么浮动这么难? 因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width ...
- 知识库总结mysql常用cmd命令
打开命令目录 打开D盘mysql目录 d: cd D:\Ampps\mysql\bin 常用操作 将mysql目录下bin目录中的mysql.exe放到C:\WINDOWS下,可以执行以下命令 连接: ...
- Python自动化运维之29、Bottle框架
Bottle 官网:http://bottlepy.org/docs/dev/index.html Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除 ...
- bzoj1136: [POI2009]Arc
Description 给定一个序列{ai | 1 <= ai <= 1000000000 且 1 <= i <= n 且 n <= 15000000}和一个整数 k ( ...
- 将日志写入EventLog
将日志写入EventLog 面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog.EventLog不仅仅记录了Windows系统自身针 ...
- 关于Unity导出的Android应用在小米、联想等机型上崩溃的问题
应用在三星手机上运行没有出现问题,但在小米和联想手机上会崩溃.这个问题在刚开始时一直查不到问题所在,后来发现是因为Android清单文件中声明的权限出现了重复,去掉了重复的权限之后,就没有出现崩溃的情 ...
- 【Java】对Web Service的理解
WSDL(Web Service Description Language)是描述Web Service的语言. 你会怎样向别人介绍你的Web service有什么功能,以及每个函数调用时的参数呢?你 ...
- codeforces C. Booking System
题意:有n组客人,分别告诉每一组的个数和花费,然后给你餐厅内k个桌子,每个桌子的最大容纳人数,如何安排使得餐厅最大收益并且容纳人数尽可能大: 思路:贪心,对花费排序,然后对每一组客人找桌子就可以. # ...