ASP 中健壮的页结构的异常处理

异常处理

    错误处理是让程序员牢骚满腹的东西之一。让我们来面对它,我们不写错误的代码就是了。。。或者类似的想法。不幸的是,代码中的运行时错误可能有许多的原因,从硬件、软件的改变到使用了别的开发团队的代码等等。有效的处理这些错误并使得它对于网站正常操作过程的中断最小化是每个有良知的程序员的责任。

    在本文讨论的范围内,有三个不同的地方可以发生错误:脚本,中间件,以及IT内部架构。IT内部架构的错误,比方周期性的性能降低并导致IIS进行(Inetinfo.exe)崩溃几乎是无法避免的。这种类型的错误通常只能打电话要求技术支持并且会让系统管理员忙上很久。开发者不能为阻止这类错误做些什么,但是我们通常能够应付和改正脚本和中间件中的错误。 在安装了IIS以后,缺省的服务器端脚本语言被设置成VBScript。许多Web 开发团队在他们的开发环境中保持了这些缺省设置,这是不幸的,因为VBScript对于处理运行时错误的支持非常的差。在VBScript中,开发者可以使用的唯一一个错误处理结构是

On Error Resume Next (打开错误处理功能) 和
On Error GoTo 0 (关闭错误处理功能).
为了在你的ASP 页面里有效的使用这个错误处理结构,你可能需要用这些结构包括可能抛出异常的代码,就象下面这样:

<%
Dim myVar
On Error Resume Next
'下面一行代码会在MSXML 4.0没有被安装或者已经损坏的情况下产生错误
Set myVar = Server.CreateObject("MSXML2.DOMDocument.4.0")
If Err.Number <> 0 Then
' 在这里处理错误
' 结束错误处理,避免以后发生的错误无法被发现
On Error GoTo 0
Else
' myVar 现在指向 MSXML 4.0 DOMDocument的一个实例
' 结束错误处理,避免以后发生的错误无法被发现
On Error GoTo 0
End If

就象你看到的一样,如果你要在每一行现有的可能发生错误的代码上使用上面的规则,你的程序马上就会充满 "On Error" 和 "If Err.Number <> 0 Then . . ." 这样的结构。

而另一方面JScript对于健壮的错误处理机制“结构化异常处理(SEH)”有内建的支持。使用SEH能够让你的软件开发团队顺利的转移到.NET 环境上来,因为SEH是JScript.NET, VB.NET, 和 C#缺省的错误处理机制。(注意:.NET不支持VBScript。)下面的例子代码执行与VBScript代码相同的操作,但是使用JScript语言并用SEH来处理异常

<%@ LANGUAGE="JScript" %>
<%
var myVar;
try {
myVar = Server.CreateObject("MSXML2.DOMDocument.4.0");
// 如果上面发生了错误,那么catch
// 代码块就会立刻被执行
// 并在myVar上进行必要的操作。
}
catch (e) {
// 在这里处理异常,异常本身可以用
// 'e' 变量进行引用。
}
finally {
// 在这里进行所有收尾工作
// 这段代码不管错误有没有发生
// (也就是“catch”块有没有运行)
// 都会执行。
}
%>
通过在服务器端使用JScript,你就得到了SEH带来的好处,以及对复杂ASP对象,比方Server,Request和Response对象的完全使用。要把这种脚本语言设置成你的ASP页面的缺省语言,你只需要简单的在你的ASP页面上添加@LANGUAGE指令,就象上面的例子那样。

时间: 2025-01-01 16:51:19

ASP 中健壮的页结构的异常处理的相关文章

ASP中健壮的页结构的异常处理

在本文讨论的范围内,有三个不同的地方可以发生错误:脚本,中间件,以及IT内部架构.IT内部架构的错误,比方周期性的性能降低并导致IIS进行(Inetinfo.exe)崩溃几乎是无法避免的.这种类型的错误通常只能打电话要求技术支持并且会让系统管理员忙上很久.开发者不能为阻止这类错误做些什么,但是我们通常能够应付和改正脚本和中间件中的砦蟆?在安装了IIS以后,缺省的服务器端脚本语言被设置成VBScript.许多Web 开发团队在他们的开发环境中保持了这些缺省设置,这是不幸的,因为VBScript对于

ASP.NET 2.0中创建内容页

asp.net|创建 在创建一个完整的母版页之后,接下来必然要创建内容页.从用户访问的角度来讲,内容页与最终结果页的访问路径相同,这好像表明二者是同一文件,实际不然.结果页是一个虚拟的页面,没有实际代码,其代码内容是在运行时状态下母版页和内容页合并的结果.在开始介绍内容页之前,还有两个概念需要强调:一是内容页中所有内容必须包含在Content控件中:二是内容页必须绑定母版页.虽然内容页的扩展名与普通ASP.NET页面相同,但是,其代码结构有着很大差别.在创建内容页的过程中,必须时刻牢记以上两个重

ASP.Net中DataGrid翻页后继续保持(当前排序)显示

asp.net|datagrid|翻页|排序|显示 要想实现翻页后继续排序,实现这样的效果:比如共 15笔记录,每页显示10条则排序时:第一页将前10条记录排序,翻第二页时后五条再单独排序. 要注意以下几点: 1.如果数据很多,最好不要把数据集放到缓存中(viewstate),影响性能 2. ViewState中存放上次是哪个e.expression并且存放此e.expression是升序还是降序 示例如下:1.现有的排序事件是这样写的,这个是点击上面排序标题时用:  private void

ASP.NET 2.0 中的异步页功能应用

asp.net|异步 下载本文源代码:WickedCode0510.exe ASP.NET 2.0 提供了大量新功能,其中包括声明性数据绑定和母版页,成员和角色管理服务等.但我认为最棒的功能是异步页,接下来让我告诉您其中的原因. 当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配给该线程.一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程用于处理其他请求.如果一个同步请求成为 I/O 绑定(例如,如果它调用一个远程 Web 服务或查询一个远程数据库,并等待调用

树型结构在ASP中的简单解决

解决|树型结构 树型结构在我们应用程序中还是很常见的,比如文件目录,BBS,权限设置,部门设置等.这些数 据信息都采用层次型结构,而在我们现在的关系型数据库中很难清淅表达.那么要在程序中遇到树型 结构问题该如何处理呢? 最近笔者通过一个ASP权限管理的程序轻松解决了一这问题,现在将其整理出来以飨读者. 首先,要将层次型数据模型转化为关系型数据模型.也就是说如何在我们的ACCESS,SQL SERVER ,ORACLE等关系型数据库中设计这个数据结构. 拿个实例来讲吧,譬如下面一个数据: 文档管理

在asp.net 2.0中结合母板页使用meta标签(扩展@Page指令)

asp.net 介绍母板页是asp.net 2.0中的一个非常强大的特性,但是它却不能提供一个实现最基础的针对搜索引擎优化的方法.如果你想你的web页被搜索引擎收录并提高排名,那么你就需要在每一个页都指定一个title和meta标记.本文将说明如何扩展你的asp.net页,以使得在使用母板页的时候你可以直接在你内容页的@Page指令中指定你的meta标签的描述和meta标签的关键字 背景当你要针对搜索引擎优化你的web页的时候,设置页的title标签和页的meta描述是其中最重要的因素之一.<t

ASP.NET 2.0中的异步页功能应用

ASP.NET 2.0 提供了大量新功能,其中包括声明性数据绑定和母版页,成员 和角色管理服务等.但我认为最棒的功能是异步页,接下来让我告诉您其中的原 因. 当 ASP.NET 接收针对页的请求时,它从线程池中提取一个线程并将请求分配 给该线程.一个普通的(或同步的)页在该请求期间保留线程,从而防止该线程 用于处理其他请求.如果一个同步请求成为 I/O 绑定(例如,如果它调用一个 远程 Web 服务或查询一个远程数据库,并等待调用返回),那么分配给该请求 的线程在调用返回之前处于挂起状态.这影响

在ASP中不用模板生成HTML静态页直接生成.html页面_应用技巧

我们一般生成HTML静态页时,常常会事先做好一个模板,然后生成时调用模板文件.那么有没有办法不用模板,如一个正常的htmer.asp页面,直接生成为htmer.html页面呢?当然是可以的,而且非常简单,今天就教大家在ASP中不用模板生成HTML静态页的方法. 这里假设有一个htmer.asp动态页面,你想把它生成为HTML静态页面htmer.html,那么我们首先新建一个ASP程序文件htmer_to_html.asp(该文件就是用来将htmer.asp动态页面生成为静态页面htmer.htm

asp中如何将多个查询结果显示在一个页面上

问题描述 asp中如何将多个查询结果显示在一个页面上 asp中如何将多个查询结果显示在一个页面上,并且能点击一下按钮就让这些显示消失 解决方案 多个table显示多个结果就是了.要想全部消失,用jquery,$("table").hide();//所有table隐藏