我习惯于使用C#编程,它显然具有相当强大的错误处理功能。现在我正在使用VBScript进行一个短期项目。我已经了解了使用"On Error _______"和Err
全局变量来处理VBscript中的错误。
然而,是否有一种方法可以生成自己的错误?例如,如果我的某个函数传递了错误类型的参数,我希望我的脚本在这一点上直接失败而不是尝试继续运行。
我习惯于使用C#编程,它显然具有相当强大的错误处理功能。现在我正在使用VBScript进行一个短期项目。我已经了解了使用"On Error _______"和Err
全局变量来处理VBscript中的错误。
然而,是否有一种方法可以生成自己的错误?例如,如果我的某个函数传递了错误类型的参数,我希望我的脚本在这一点上直接失败而不是尝试继续运行。
它详细介绍了Err.Raise()
方法,但遗漏了一些关键点。
来自原问题
然而,是否有办法生成我自己的错误?例如,如果我的其中一个函数传递了错误类型的参数,我希望我的脚本在那一点上彻底失败,而不是尝试继续执行。
Err.Raise()
非常灵活,它可以抛出现有的异常(如前所述),也可以抛出全新的用户定义异常。
Call Err.Raise(vbObjectError + 10, "My Application", "My custom error message")
vbObjectError
(-2147221504
)是VBScript内置的常量,用于定义用户自定义错误的边界。
可以的。使用 Err.Raise
方法,例如:
Err.Raise 5 ' Invalid procedure call or argument
有关VBScript标准错误代码的列表,请参见Errors (VBScript)。
try {
// some code
} catch( Exception e ) {
// error handler
} finally {
// clean up things
}
on error resume next
' some code
if( Err.number <> 0 ) then
' error handler -- you can use Err.raise() here to display your own errors
Err.clear()
else
' clean up things
end if
on error goto 0
如果你想要一些优秀的VBScript示例,可以查看ASP Xtreme Evolution项目
finally
块即使发生错误也会执行。你的VBScript“等效”应该将“清理事项”部分放在If
语句之外,并添加一个On Error GoTo 0
来停止错误处理。此外,另一个区别是VBScript的'some code
部分只能有一行或者至少只包含一个可能会生成错误的行,因为无论下一行是什么,当On Error Resume Next
激活时都将被执行。If 1 = 1 / 0 Then
将流入If块中。 - ErikE
vbObjectError
和任何整数出现过问题。但是还是感谢您指出了范围,这对某些人可能会有用。 - user692942