ASP 错误处理
在开发的过程中,尽管开发人员水平足够高,开发过程中也尽可能仔细,但是仍然避免不了错误的出现。错误处理是VBScript中的一种处理错误的机制,定义了出现错误后将如何处理(例如跳转)的程序块。
1 错误产生原因
在调试和运行程序的过程中,会出现各种各样的错误。在VBScript中主要有两类错误,即编辑器错误和运行中错误。
在编写VBScript脚本时候,由于疏忽或者其它原因,创建的语句中违反了VB Script的语法规则,例如关键字拼写错误、函数使用方法不当、定义重名变量等,我们将这样统称为编辑器错误。如下面的一段代码,声明了一个过程,但是缺少E
只有在运行脚本、为变量表达式赋值或分配内存时,才会产生VBScript运行时错误。
例如,在Login.asp中,需要连接SQL Server数据库的用户表来验证登录信息,但是由于服务器的SQL Server服务暂时停止,那么就会产生运行中错误。
在VBScript中,可以调用Err对象来查看错误的详细信息,我们将在下一小节详细讲解Err对象的属性和方法。
2 常见处理方案
VBScript错误处理需要两个元素一同协作。使用On Error Resume Next语句可以开启该功能,使用On Error GoTo 0可将其关闭。开启该功能时,可以使用内置的Err对象获取所发生错误类型的一些相关信息。
Err对象是负责记录存储一个系统运行时发生的错误和警告。Err对象提供了D esription属性、Number属性、Source属性、NativeError属性、SQLState属性、Hel
pContext属性等。
●Desription 用来记录或警告发生的原因或者描述。
●Number 用来表示所发生的错误或者警告代码,在ADO常数声明文件
asovbs.inc中有常用的常数,可以用来参考。
●Source 用来记录造成系统发生错误或者警告的来源。
●NativeError 用来表示所发生的错误或者警告代码,与Number属性不同
的是这里是指provider默认的错误代码。
●SQLState 表示最后一次的SQL命令运行状态。
●HelpContext 表示错误或者警告的解决方法说明和主题。
Err对象还提供了两种方法:
●Clear()
清除当前所有的Err对象设置。请务必在每次检查Err对象后使用Clear。否则,上一错误的信息将会留存在Err对象中,而且如果您再次执行检查但其间未发生错误,而那些错误信息仍留存在那里,错误检查就可能误报发生了错误。
●Raise()
产生一个运行期错误。如果发生的某种不利情况导致脚本引擎无法产生错误,则可以使用此方法在脚本的一个部分中产生VBScript错误。
只有加入On Error Resume Next语句,才能进行错误检查。如果检查Err对象时未事先使用On Error Resume Next开启错误处理,VBScript将假定Err.Number 为0,即未发生错误。脚本将假定一切正常,接着继续执行下一个操作。如果实际上发生了错误,则可能导致脚本失败并产生未处理的运行时错误,该错误会使所有执行中的操作终止。
我们往往将On Error Resume Next置于脚本起始处,这样做会使它应用于整个脚本。但是其范围并不包括函数或者过程,如果要处理函数或者过程内的错误,则还必须在检查Err对象之前在每个函数或子例程中加入On Error Resume Next。
在下面的示例中,定义一个字符串变量a,使用For…Next语句循环,会产生
运行结果如图2-5所示。
图2-5  错误处理示例
On Error Resume Next 可以隐藏语法错误,但在调试脚本时注释掉On
Error Resume Next 可以确保语法及其他错误得到显示和处理。不过,当前页面脚本发生错误
请记得在使用脚本之前删除注释分隔符。
可以使用On Error GoTo 0关闭错误处理。因此,可以在即将要检查Err 对象之前使用On Error Resume Next 开启错误处理,在完成检查后使用On Error GoT o 0关闭错误处理。