220 SP3高级编程 下载 strlastName a (get from database) strother -(get from database strPrint strTitle e strFirstName s strMiddleInitial strLastname&·“& strother 运行这段程序可以得到如下结果 MS. Janet C. Clarke MBNA. BSc. MechEng 但不是每个人都和" Janet"一样,有一个中间名字。并且许多人可能没有头衔,所以可能 仅仅得到 这当然不是一个能引起脚本不能运行或者产生运行期错误的致命错误。然而,对于用户 来说,提供这样的脚本是不可接受的。最好程序能在输出字符串之前检查名字的每一部分。 surprint=· If Len(strritle)Then strPrint strPrint strritle& If Len(strFirstName)Then strPrint strprint strfirstName If Len(strMiddleInitial)Then strPrint e strPrint strMiddleInitial s If Len(strLastName) Then strprint strprint strLastName If Len(strother) Then strPrint strothe 上面这段程序保证了空格和小数点仅加在名字中有值的地方。如果仅给 strOther字符串赋 值,而对其他都不赋值的话,将在开始处得到一个空格。然而出现这种情况的可能性非常小 如果有姓的话,通过仅添加“ other”部分可以防止这种错误的发生。 If Len(strTitle) Then strprint strPrint strTitle If Len(strFirstName)Then strPrint strprint strfirstName If Len(strMiddleInitial) Then strPrint rPrint& strMiddleInitia1岳·. If Len(strLastName) Then strPrint strPrint strlastName If Len( strother) Then strPrint=··& strother Ena工f 最坏的情况是结果为一个空字符串,可以检查这种可能性并中止打印。 If Len(strPrint)=0 Then sponse.Clear End IE 7.2.2脚本运行期错误 使用一个不存在的函数,或者破坏了脚本语言使用的规则,会出现脚本运行期错误。许 多错误是语法错误(本章前面讨论过的),但是许多错误是由于所赋的值和函数参数的要求不 致引起的 例如,用一个窗体收集来自用户的日期,并存入数据库中,或者用其他方式进行处理 为了确定日期是有效的,在把数据插入数据库之前使用 CDate函数 strData= equest Form(TheDate" datDate CDate(strAte)
运行这段程序可以得到如下结果: 但不是每个人都和 " J a n e t "一样,有一个中间名字。并且许多人可能没有头衔,所以可能 仅仅得到: 这当然不是一个能引起脚本不能运行或者产生运行期错误的致命错误。然而,对于用户 来说,提供这样的脚本是不可接受的。最好程序能在输出字符串之前检查名字的每一部分。 上面这段程序保证了空格和小数点仅加在名字中有值的地方。如果仅给 s t r O t h e r字符串赋 值,而对其他都不赋值的话,将在开始处得到一个空格。然而出现这种情况的可能性非常小。 如果有姓的话,通过仅添加“ o t h e r”部分可以防止这种错误的发生。 最坏的情况是结果为一个空字符串,可以检查这种可能性并中止打印。 7.2.2 脚本运行期错误 使用一个不存在的函数,或者破坏了脚本语言使用的规则,会出现脚本运行期错误。许 多错误是语法错误(本章前面讨论过的),但是许多错误是由于所赋的值和函数参数的要求不一 致引起的。 例如,用一个窗体收集来自用户的日期,并存入数据库中,或者用其他方式进行处理。 为了确定日期是有效的,在把数据插入数据库之前使用 C D a t e函数: 220计计ASP 3 高级编程 下载
第7章调试和错误处理 221 如果用户在填表时出现了差错,程序便会产生一个脚本错误,如图7-12所示 H11k 422100+ 110M Permer odal irenee2a时 Er下 图7-12出错信息的屏幕 查看错误信息,可以发现错误是由执行程序代码的脚本引擎产生的。错误号用十六进制 显示出来,它是由Ⅴ SCript错误号和十六进制数0X800A0000加得到的(见第4章),上例中 VBScript错误号是十六进制OxD,或者十进制数的13。 大多数微软技术(包括ASP)返回的错误号是由8位十六进制数组成的。第一位字 符总是8,表明这个状态信息是服务器错误信息。后面跟着2位0,然后是服务代码 对 VBScript和 JScript错误,服务代码总是"A",最后4位字符是用十六进制数表示的错 如果査看一下Ⅴ SCript文档,你会发现13号错误是“ Type Mismatch”错误。当然,我们 从ASP错误页中显示的错误描述中已经知道了这一点。然而,在本章后面我们将要看到,在 错误处理技术中,得到错误号是非常有用的 注意,在错误信息显示窗口中,显示的是服务器对错误的反馈信息。HTTP状态代码为 500.100,属于“ Internal Server Error”。在第4章,讨论ASP定制错误网页的工作方式时,我 们发现这种错误常常因为载入了错误网页。本章后面,将会看到在网页中如何处理这些错误 7.2.3ASP和SS的运行期错误 脚本错误是由正在使用的脚本引擎发现的,然而 ASP DLL和 SSI DLL也能发现脚本错误, 尽管它们与使用的脚本引擎无关。典型的SSI例子是在# include指令中给文件一个错误的名字 或路径。错误由 SSI DLL或ASP发现的,而不由脚本引擎发现。可看到此时错误类型是 “ Active Server Pages",ASP内部错误代码是“AsP0126”,如图7-13所示,然而在这种情况 错误号是4005,指出了这是一种为 SSI DLL(ssnc:d)定义的特殊错误错误 下d甲! in Ifer ca? The salade fw na thare nr wa stood trds队|use1 图7-13出错信息的屏幕
如果用户在填表时出现了差错,程序便会产生一个脚本错误,如图 7 - 1 2所示。 图7-12 出错信息的屏幕 查看错误信息,可以发现错误是由执行程序代码的脚本引擎产生的。错误号用十六进制 显示出来,它是由 V B S c r i p t错误号和十六进制数 0 X 8 0 0 A 0 0 0 0相加得到的(见第4章),上例中 V B S c r i p t错误号是十六进制0 x D,或者十进制数的1 3。 大多数微软技术 (包括A S P )返回的错误号是由 8位十六进制数组成的。第一位字 符总是8,表明这个状态信息是服务器错误信息。后面跟着 2位0,然后是服务代码。 对V B S c r i p t和J S c r i p t错误,服务代码总是" A ",最后4位字符是用十六进制数表示的错 误号。 如果查看一下V B S c r i p t文档,你会发现1 3号错误是“Type Mismatch”错误。当然,我们 从A S P错误页中显示的错误描述中已经知道了这一点。然而,在本章后面我们将要看到,在 错误处理技术中,得到错误号是非常有用的。 注意,在错误信息显示窗口中,显示的是服务器对错误的反馈信息。 H T T P状态代码为 5 0 0 . 1 0 0,属于“Internal Server Error”。在第4章,讨论A S P定制错误网页的工作方式时,我 们发现这种错误常常因为载入了错误网页。本章后面,将会看到在网页中如何处理这些错误。 7.2.3 ASP和S S I的运行期错误 脚本错误是由正在使用的脚本引擎发现的,然而 ASP DLL和SSI DLL也能发现脚本错误, 尽管它们与使用的脚本引擎无关。典型的 S S I例子是在# i n c l u d e指令中给文件一个错误的名字 或路径。错误由 SSI DLL 或A S P发现的,而不由脚本引擎发现。可看到此时错误类型是 “Active Server Pages”,A S P内部错误代码是“ ASP 0126”,如图7 - 1 3所示,然而在这种情况 下,错误号是4 0 0 5,指出了这是一种为SSI DLL(ssinc.dll)定义的特殊错误错误。 图7-13 出错信息的屏幕 第7章 调试和错误处理计计2 2 1 下载