ASP 3.0高级编程(三十三)
ASP 3.0高级编程(三十三),ASP 3.0高级编程(三十三)
在VBScript中,可以使脚本解释器不处理其找到的任何错误,并且使用On Error Resume Next语句继续运行下个语句。一旦这个语句已被处理,脚本引擎将继续运行后面的程序,而不理会已经发现的任何错误。然而,这种过程仅适用于顺序执行语句的环境,换句话说,不适用于嵌套的函数或子程序。
1. 使用On Error Resume Next语句
一个错误在子程序中出现时,如果没有运行On Error Resume Next语句,那么错误将被交给调用它的环境,这个过程一直重复到找到运行On Error Resume Next语句的环境继续运行,或者找到缺省的脚本错误处理器,把错误交给ASP并且IIS显示缺省错误网页。
这种错误调用链意味着可以创建防止使程序停止运行的运行期错误的函数和子程序。如果在子程序的开头放置一个On Error Resume Next语句,任何运行期错误会中止这个子程序的运行,但是调用该子程序的程序将继续运行而不会引起网页的停止。
例如,如果需要向一个文件中写入字符串,可以通过一个独立的函数对文件进行访问文件,防止错误中断整个程序的运行:
' create a file named strFileName, overwriting any existing one with that name
' and writes strContent into it then closes the file
' returns True if it succeeds, or False on any error
Function WriteNewFile(strFileName, strContent)
On Error Resume Next ' turn off the default error handler
WiteNewFile = Flase ' default return value of function
Set objFSO = CreateObject("Scripting.FileSystemObject")
If Err.Number = 0 Then Set objFile = objFSO.CreateTextFile(strFileName, True)
If Err.Number = 0 Then objFile.WriteLine strContent
If Err.Number = 0 Then objFile.Close
If Err.Number = 0 Then WriteNewFile = True
End Function
注意上面的程序在试图处理每个程序语句之前,先检查VBScript的Err对象的Number属性。如果这个值为0(还没有出现错误),那么就能够继续对文件的定入和创建过程。然而如果错误确实发生了,脚本引擎将设置Err对象的属性的值,并且继续处理下一行。
只要不引起错误而能正常运行,函数的返回值将设置为“True”。否则函数将返回“False”。在编程中可以在对其进行测试以后,再使用该函数和采取其他行动。
下面是一个简单的例子,我们希望对任务的第一部分采用一个独立的函数,以便能更精确地辨别出错误产生在何处。这样,调试时也更容易阅读代码。在页面的主程序中,可以调用三个单独的函数。
If CreateNewFile(strFileName) Then ' create the new file
Response.Write "New file successfully created<BR"
If WriteContent(strContent) Then ' write the content
Response.Write "Content written to file<BR"
Else
Response.Write "ERROR: Failed to write to the file<BR"
End If
If CloseFile(strFileName) Then
Response.Write "File closed<BR"
Else
Response.Write "ERROR: Failed to close the file<BR"
End If
Else
&nbs