ASP 3.0高级编程(三十一)

2016-01-29 19:15 0 1 收藏

ASP 3.0高级编程(三十一),ASP 3.0高级编程(三十一)

【 tulaoshi.com - ASP 】

  7.1.2 语义或“运行期”错误
       语法错误的发现和处理是令人烦恼的,但在编程中会遇到一些真正“令人兴奋”的另一类型的错误——语义错误(semantic error)或称“运行期”错误(runtime error)。这类错误仅当运行一个脚本代码或其他程序时才会发现。换句话说完整有效的代码已经通过解释器或编译器的解释或编译,在执行时产生了错误。术语“运行期错误”通过是指语义错误的结果,也就是说这类错误存在于代码的语义中,当代码运行时它们才变成可见的。
这种区别来自于这种事实:程序编译器或解释器在处理程序代码之前必须建立一种内部代码的描述,涉及多种结构开头和结尾的匹配,以便标明每种结构包含什么内容,然后分析每个句子,以便知道如何执行这个句子。例如,如果在程序代码中有一个If Then … Else … End If 结构,解释器或编译器做的第一步工作就是分析哪些语句在“Then”的部分,哪些在“Else”部分。这一步的目的是,在对结构中的If条件进行测试之后,可以决定该到哪个分支去执行。
编译器(诸如在编程语言像Visual Basic和C++中见到的那种)和解释器(诸如用于像VBScript和JScript那样的脚本语言的解释器)之间真正区别在于:编译器不试图运行程序代码,而是在对源程序进行两次预处理后,形成二进制指令或符号代码,并形成一个.exe文件或.dll文件。解释器不含有代码的文件,而是在运行时逐步执行。
1.  使运行停止的错误
如果程序中含有一个语义错误,通常在运行时可得到提示。如果幸运的话,当错误发生时,程序会停止,这样可以容易地找出错误所在。例如,下面这段程序定义了一个有六个元素的数组。
<%
Dim arrValues(5)                  'to hold six elements, indexed from 0 to 5
ArrValues(6) = "Whoops, got an error"
%
如果试图读或设置下标为6的元素值,可以得到一个运行期错误,如图7-7所示:

图7-7 程序执行结果6
注意这里的错误类型是“runtime”(相当于语义)错误,而不是语法错误。错误信息显示了错误所在行数和错误的描述,有助于我们比较容易地找到相应的错误。但这是一个简单的例子,在更复杂的程序代码中,这种错误可能出现在一些遍历一些值并把它们加到一个数组中程序中。如下所示:
<%
       Dim arrValues(5)                                       ' to hold six elements
       For intLoop = 0 To intListCount                  ' the number of items in some list
              arrValues(intLoop) = Request.Form("SelectedItems")(intListCount)
       Next
%
这种情况下,很可能是得到了过多的列表条目,或者是数组的索引不够,根据代码的要求,可以判断是那种错误,并且能够通过增加数组大小来解决这个错误。
<%
Dim arrValues(10)                                     ' to hold eleven elements
For intLoop = 0 To intListCount                  ' the number of items int some list
arrValues(intLoop) = Request.Form("SelectedItems")(intListCount)
       Next
       %
       或者相应地设置循环的参数来解决处理这个错误。
<%
Dim arrValues(5)                                       ' to hold six elements
IntArrayMax = intListCount
If intArrayMax 5 Then intArrayMax = 5
For intLoop = 0 To intArrayMax             

来源:https://www.tulaoshi.com/n/20160129/1508890.html

延伸阅读
标签: ASP
  4.3.4 Server对象的错误处理        ASP没有错误处理机制一直受到批评。        在VBScript中,有一个On Error Resume Next语句,它使脚本解释器忽略运行期错误并继续脚本代码的执行。接着该脚本可以检查Err.Number属性的值,判别是否出现了错误。如果出现错误...
标签: ASP
  访问和更新Cookies集合     Cookies的值比ASP其他集合(例如Form和ServerVariables)的值要复杂得多。Cookie是一小块由浏览器存贮在客户端系统上的文本,且随同每次请求发往它们应用于的域中的服务器。     ASP使得应用cookie较为容易,可以从Request对象的Cookies集合中获得所有随同请求发出...
标签: ASP
  5.3.2 Dictionary对象示例        本书提供了一系列示例文件可用来试验脚本运行时间库的各种属性。        本章代码的缺省页面提供了一系列可使用的VBScript示例链接。有些示例对JScript同样有效。这些示例存放在Chapter05目录下相应的子目录里,显示的界面如图...
标签: ASP
  4.3.3 执行其他的网页        ASP 3.0和IIS 5.0的新特性之一就是引入了可编程的服务器端重定向(server-side redirection)的概念。这意味着,可以把一个网页的控制和执行转到另外一个网页,而不需要在客户端使用Response.Rdedirect方法。 1.  客户端重定向带来的问题 ASP编程人员通常使...
标签: ASP
  4.3.5 获取Server对象的路径信息        在对存储在Web网站上的文件进行操作时,需要获得文件的实际的物理路径,而不是使用虚拟路径或URL,尽管在其他网页中能用它们正常地定位文件。下一章中有一个例子,它使用FileSystemObject对Web站点的InetPub\WWWRoot文件夹中的文件进行读写。当创建自己的定...

经验教程

523

收藏

70

精华推荐

ASP 3.0高级编程(十七)

ASP 3.0高级编程(十七)

黑鹰666990

ASP 3.0高级编程(七)

ASP 3.0高级编程(七)

尕伍儿

ASP 3.0高级编程(一)

ASP 3.0高级编程(一)

cheneyfanpku

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部