第九章 ASP 程序调试与错误处理
9.1 ASP 程序调试
调试对程序
设计师而言,可以说是家常便饭,无论是庞大如 Microsoft Windows、Microsoft Office、Internet Explorer 等商用软件或小型若我们所 编写的 ASP 程序,都可能产生错误,因此,任何
软件在推出之前,都必须经过严 格的调试与测试,才能尽量减少错误的产生。 一般来说,常见的程序错误有下列两种: 终止执行错误:这类的错误或导致程序终止执行,又称 Fatal Error。 运行错误:这类的错误虽然不会导致程序终止执行,但会产生错误饿执行结 果,又称 Nonfatal Error。 现在,我们一起来看如下会产生执行错误的例子: <%@ Language = VBScript %> <% Option Explicit %> <% strTmp = "大家好,我是陈小贞!" Response.Write strTmp %> 本例中,由于我们在第二行加入<% Option Explicit %>语句,也就是每个 变量在是使用之前必须先声明,而在第四行使用的 strTmp 变量却没有声明,故 产生错误。
9.2 使用 Err 对象处理错误情况
在默认情况下,当 ASP
程序发生终止执行的错误时,浏览器会出现“无法显 示网页”和许多术语的错误信息。为了避免这种情况,我们可以换一种写法,利 用 ASP2.0 所支持 Err 对象及 VBScript 的 On Error Resume Next 语句, VBScript 令 引擎在遇到 ASP 程序错误时,可以先跳过,直接去执行下一行。现在,我们来看 下面的例子: 01:<%@ Language =
VBScript %> 02:<% Option Explicit %> 03:<% 04: On Error Resume Next 05: strTmp = "大家好,我是陈小贞!" 06: Response.Write strTmp 07: If Err.Number > 0 Then 08: Response.Write "对不起,程序发生错误,停止执行。
" 09: Response.Write "错误代号:" &; Err.Number &; "
" 10: Response.Write "错误原因:" &; Err.Description &; "
" 11: End If
12: Response.Write "若要回首页,请
按此处" 13:%> 本例中, 由于我们在第 4 行加入 On Error Resume Next 语句, 所以当 VBScript 执行到第 5 行时原本会因为没有声明 strTmp 变量而终止执行,但现在则会跳过 产生错误的语句,直接去执行第 7~12 行,如此以来,用户就不会再看到“无法 显示网页”和许多术语的错误信息,而且为了方便用户返回首页,我们还加上第 12 行的语句。
9.3 使用 ASPError 对象处理错误情况
我们知道,当网页发生错误时,Web 服务器会产生 HTTP 错误,同时在浏览器 显示默认的错误画面。我们先看下面的例子: 01:<%@ Language = VBScript %> 02:<% Option Explicit %> 03: 04: 05: 对不起,程序发生错误,停止执行。
06: 若要回首页,请
按此处
07: <% 08: Dim objASPError 09: Set objASPError = Server.GetLastError() 10: %> 11: 错误码:<%= objASPError.ASPCode %>
12: 错误代号:<%= objASPError.Numb
er %>
13: 错误程序代码:<%= objASPError.Source %>
14: 错误文件:<%= objASPError.File %>
15: 错误行数:<%= objASPError.Line %>
16: 错误 Column:<%= objASPError.Column %>
17: 错误类型:<%= objASPError.Category %>
18: 错误描述:<%= objASPError.Description %>
19: 错误描述:<%= objASPError.ASPDescription %>
20: 21: 本例中,我们在第 9 行调用 Server 对象的 GetLastError()方法取得最近一 次发生的错误,然后将返回的 ASPError 对象实例指派给 objASPError 变量。在 第 11~20 行, 我们利用 ASPError 对象的属性显示出各项错误信息, 其中 ASPCode 属性为 IIS 在碰到 ASP 错误时所产生的错误码, Number 属性为错误代码, Source 属性为产生错误的程序代码,File 属性为产生错误的文件,Line 属性为产生错 误的行数,Column 属性为产生错误的那行程序代码的第几个字符,Category 属 性为产生错误的类型,Description 属性为错误描述,ASPDescription 属性为 ASP 错误描述。