有没有办法检查是否定义了VBScript函数?

时间:2009-05-28 15:10:29

标签: function asp-classic vbscript defined

这可能只是一厢情愿......

在调用之前是否有任何方法可以检查是否定义了ASP / VBScript函数?

3 个答案:

答案 0 :(得分:15)

这是我的解决方案,它的工作原理相同,但是hacky-ness非常独立:

Function FunctionExists( func_name )
    FunctionExists = False 

    On Error Resume Next

    Dim f : Set f = GetRef(func_name)

    If Err.number = 0 Then
        FunctionExists = True
    End If  
    On Error GoTo 0

End Function 

答案 1 :(得分:6)

这是一种稍微有点hacky的方式,因为它依赖于设置“On Error Resume Next”,但你可以这样做:

On Error Resume Next
Dim objRef1, objRef2
Set objRef1 = GetRef("DoStuff1")
If objRef1 Is Nothing Then
    Call objRef1
Else
    MsgBox "DoStuff1 is not defined!"
End If

Set objRef2 = GetRef("DoStuff2")
If objRef2 Is Nothing Then
    MsgBox "DoStuff2 is not defined!"
Else
    Call objRef2
End If

Sub DoStuff1
    MsgBox "DoStuff1!"
End Sub

如果您尝试获取指针的子或函数不存在,则对GetRef的调用将生成异常(如此处使用DoStuff2的情况)。然后,您可以检查引用是否按预期设置。

答案 2 :(得分:0)

提供的答案是正确的,我只是做了一个简单的修改,添加了 Err.Clear 并根据提供的答案压缩了函数。

我还将该函数重命名为更合适的名称,以反映它可用于检查函数和子例程是否存在的事实。

Function ProcExists(ByVal ProcName)

 On Error Resume Next
  Set ProcName = GetRef(ProcName)
  ProcExists   = (Err.Number = 0)
  Err.Clear
 On Error GoTo 0

End Function