理论上,如果VarType(foo)
返回10
或vbError
,则表示foo
是错误。我错了吗?是否可以创建一个错误并将其分配给VBScript中的错误子类型变量?
那么我该如何强制这种情况发生?是否有可能强制foo
发生错误?如果不是,那么我不明白为什么Error是一个可变子类型。
理论上,如果VarType(foo)
返回10
或vbError
,则表示foo
是错误。我错了吗?是否可以创建一个错误并将其分配给VBScript中的错误子类型变量?
那么我该如何强制这种情况发生?是否有可能强制foo
发生错误?如果不是,那么我不明白为什么Error是一个可变子类型。
VBScript不支持所有的Variant子类型。例如,尝试创建子类型vbDecimal
的变量(VBScript甚至没有CDec()
函数以允许您键入转换为十进制)或尝试创建除vbVariant
子类型以外的任何其他数组。
这些constants是由OLE自动化库定义的Variant规范的一部分。 VB/VBA支持所有这些子类型,并且似乎VBScript采用了相同的常量,尽管它们对其中很多都没有本地支持。
在VBScript保持:
VarType (object)
返回其默认属性的类型。Err
对象的默认属性是Number。 Err.Number
包含一个整数。因此,VarType(Err)
返回3
以及VarType(foo)
在下面的例子:
On Error Resume Next
Dim foo
Set foo = Err
se tr 'this line raises an error
Wscript.Echo CBool(IsObject(foo)) _
& vbNewLine & VarType(foo) _
& vbNewLine & foo.Number _
& vbNewLine & foo.HelpFile _
& vbNewLine & foo.HelpContext _
& vbNewLine & foo.Source _
& vbNewLine & foo.Description