mp; ". "
If Len(strLastName) Then
strPrint = strPrint & strLastName
If Len(strOther) Then strPrint = strPrint & " " & strOther
End If
最坏的情况是结果为一个空字符串,可以检查这种可能性并中止打印。
…
If Len(strPrint) = 0 Then
Response.Clear
Response.End
End If
7.2.2 脚本运行期错误
使用一个不存在的函数,或者破坏了脚本语言使用的规则,会出现脚本运行期错误。许多错误是语法错误(本章前面讨论过的),但是许多错误是由于所赋的值和函数参数的要求不一致引起的。例如,用一个窗体收集来自用户的日期,并存入数据库中,或者用其他方式进行处理。为了确定日期是有效的,在把数据插入数据库之前使用CDate函数:
<%
strDate = Request.Form("TheDate")
datDate = CDate(strDate)
…
如果用户在填表时出现了差错,程序便会产生一个脚本错误,如图7-12所示:
图7-12 出错信息的屏幕
查看错误信息,可以发现错误是由执行程序代码的脚本引擎产生的。错误号用十六进制显示出来,它是由VBScript错误号和十六进制数0x800A0000相加得到的(见第4章),上例中VBScript错误号是十六进制0xD,或者十进制数的13。
大多数微软技术(包括ASP)返回的错误号是由8位十六进制数组成的。第一位字符总是8,表明这个状态信息是服务器错误信息。后面跟着2位0,然后是服务代码。对VBScript和JScript错误,服务代码总是“A”,最后4位字符是用十六进制数表示的错误号。
如果查看一下VBScript文档,你会发现13号错误是“Type Mismatch”错误。当然,我们从ASP错误页中显示的错误描述中已经知道了这一点。然而,在本章后面我们将要看到,在错误处理技术中,得到错误号是非常有用的。
注意,在错误信息显示窗口中,显示的是服务器对错误的反馈信息。HTTP状态代码为500.100,属于“Internal Server Error”。在第4章,讨论ASP定制错误网页的工作方式时,我们发现这种错误常常因为载入了错误网页。本章后面,将会看到在网页中如何处理这些错误。
7.2.3 ASP和SSI的运行期错误
脚本错误是由正在使用的脚本引擎发现的,然而ASP DLL和SSI DLL也能发现脚本错误,尽管它们与使用的脚本引擎无关。典型的SSI例子是在#include指令中给文件一个错误的名字或路径。错误是由SSI DLL或ASP发现的,而不是由脚本引擎发现。可看到此时错误类型是“Active Server Pages”,ASP内部错误代码是“ASP 0126”,如图7-13所示,然而在这种情况下,错误号是4005,指出了这是一种SSI DLL(ssinc.dll)定义的特殊错误。
图7-13 出错信息的屏幕
ASP错误代码总览
对于在ASP DLL中造成失败的错误,表7-1是返回的错误代码。当这类错误发生时,你可以在ASPError对象的ASPCode属性中找到这些错误代码。
表7-1 ASP错误代码
错误代码
错误消息和扩展信息
ASP0100
Out of Memory(内存溢出)
ASP0101
Unexpected error(函数返回exception_name)
ASP0102
Expecting string input(期待字符串输入)
ASP0103
Expecting numeric input(期待数字输入)
ASP0104
Operating not allowed(操作不允许)
ASP0105
Index out of range(数组下标溢出)
ASP0106
Type Mismatch(数据类型不匹配)
ASP0107
Stack Overflow(处理的数据量超过了允许的范围)
ASP0115
Unexpected error(出现在外部对象中的可捕获的错误exception_name,脚本不能继续运行)
ASP0177
Server.CreateObject Falied(无效的ProgID)
ASP0190
Unexpected error(当释放外部对象时,出现的可捕获的错误)
ASP0191
Unexpected error(当外部对象的OnStartPage方法中出现的可捕获的错误)
ASP0192
Unexpected error(在外部对象的OnEndPage方法中出现的可捕获的错误)
ASP0193
OnStartPage Failed(在外部对象OnStartPage方法中出现错误)
ASP0194
OnEndPage Failed(在外部对象的OnEndPage方法中出现错误)
ASP0240
Script Engine Exception(脚本引擎从object_name抛出异常exception_name)
ASP0241
CreateObject Exception(object_name的CreateObject方法所导致的异常exception_name)
ASP0242
Query OnStartPage Interface Exception(查询对象object_name的OnStartPage或OnEndPage方法所导致的异常exception_name)
ASP错误通常仅当组件有问题或服务器本身有问题时才出现。最常见是使用Server.CreateObject时的ASP 0177错误和严重的ASP 0115错误。ASP 0115错误通常表示组件程序代码中发生的错误,而ASP 0177错误通常是由不能正确安装组件引起的或者由我们指定的ProgID字符串的错误引起的。
If Len(strLastName) Then
strPrint = strPrint & strLastName
If Len(strOther) Then strPrint = strPrint & " " & strOther
End If
最坏的情况是结果为一个空字符串,可以检查这种可能性并中止打印。
…
If Len(strPrint) = 0 Then
Response.Clear
Response.End
End If
7.2.2 脚本运行期错误
使用一个不存在的函数,或者破坏了脚本语言使用的规则,会出现脚本运行期错误。许多错误是语法错误(本章前面讨论过的),但是许多错误是由于所赋的值和函数参数的要求不一致引起的。例如,用一个窗体收集来自用户的日期,并存入数据库中,或者用其他方式进行处理。为了确定日期是有效的,在把数据插入数据库之前使用CDate函数:
<%
strDate = Request.Form("TheDate")
datDate = CDate(strDate)
…
如果用户在填表时出现了差错,程序便会产生一个脚本错误,如图7-12所示:
图7-12 出错信息的屏幕
查看错误信息,可以发现错误是由执行程序代码的脚本引擎产生的。错误号用十六进制显示出来,它是由VBScript错误号和十六进制数0x800A0000相加得到的(见第4章),上例中VBScript错误号是十六进制0xD,或者十进制数的13。
大多数微软技术(包括ASP)返回的错误号是由8位十六进制数组成的。第一位字符总是8,表明这个状态信息是服务器错误信息。后面跟着2位0,然后是服务代码。对VBScript和JScript错误,服务代码总是“A”,最后4位字符是用十六进制数表示的错误号。
如果查看一下VBScript文档,你会发现13号错误是“Type Mismatch”错误。当然,我们从ASP错误页中显示的错误描述中已经知道了这一点。然而,在本章后面我们将要看到,在错误处理技术中,得到错误号是非常有用的。
注意,在错误信息显示窗口中,显示的是服务器对错误的反馈信息。HTTP状态代码为500.100,属于“Internal Server Error”。在第4章,讨论ASP定制错误网页的工作方式时,我们发现这种错误常常因为载入了错误网页。本章后面,将会看到在网页中如何处理这些错误。
7.2.3 ASP和SSI的运行期错误
脚本错误是由正在使用的脚本引擎发现的,然而ASP DLL和SSI DLL也能发现脚本错误,尽管它们与使用的脚本引擎无关。典型的SSI例子是在#include指令中给文件一个错误的名字或路径。错误是由SSI DLL或ASP发现的,而不是由脚本引擎发现。可看到此时错误类型是“Active Server Pages”,ASP内部错误代码是“ASP 0126”,如图7-13所示,然而在这种情况下,错误号是4005,指出了这是一种SSI DLL(ssinc.dll)定义的特殊错误。
图7-13 出错信息的屏幕
ASP错误代码总览
对于在ASP DLL中造成失败的错误,表7-1是返回的错误代码。当这类错误发生时,你可以在ASPError对象的ASPCode属性中找到这些错误代码。
表7-1 ASP错误代码
错误代码
错误消息和扩展信息
ASP0100
Out of Memory(内存溢出)
ASP0101
Unexpected error(函数返回exception_name)
ASP0102
Expecting string input(期待字符串输入)
ASP0103
Expecting numeric input(期待数字输入)
ASP0104
Operating not allowed(操作不允许)
ASP0105
Index out of range(数组下标溢出)
ASP0106
Type Mismatch(数据类型不匹配)
ASP0107
Stack Overflow(处理的数据量超过了允许的范围)
ASP0115
Unexpected error(出现在外部对象中的可捕获的错误exception_name,脚本不能继续运行)
ASP0177
Server.CreateObject Falied(无效的ProgID)
ASP0190
Unexpected error(当释放外部对象时,出现的可捕获的错误)
ASP0191
Unexpected error(当外部对象的OnStartPage方法中出现的可捕获的错误)
ASP0192
Unexpected error(在外部对象的OnEndPage方法中出现的可捕获的错误)
ASP0193
OnStartPage Failed(在外部对象OnStartPage方法中出现错误)
ASP0194
OnEndPage Failed(在外部对象的OnEndPage方法中出现错误)
ASP0240
Script Engine Exception(脚本引擎从object_name抛出异常exception_name)
ASP0241
CreateObject Exception(object_name的CreateObject方法所导致的异常exception_name)
ASP0242
Query OnStartPage Interface Exception(查询对象object_name的OnStartPage或OnEndPage方法所导致的异常exception_name)
ASP错误通常仅当组件有问题或服务器本身有问题时才出现。最常见是使用Server.CreateObject时的ASP 0177错误和严重的ASP 0115错误。ASP 0115错误通常表示组件程序代码中发生的错误,而ASP 0177错误通常是由不能正确安装组件引起的或者由我们指定的ProgID字符串的错误引起的。