这可能只是一厢情愿......
在调用之前是否有任何方法可以检查是否定义了ASP / VBScript函数?
答案 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