我正在维护一个vb6项目(ActiveX DLL)。在调试时,该应用程序运行到下面的函数:VB6调试 - 不会去错误处理代码
Public Function HasValue(ByVal vValue) As Boolean
On Error GoTo Err
If IsMissing(vValue) Then
HasValue = False
ElseIf IsNull(vValue) Or Len(vValue) = 0 Then
HasValue = False
ElseIf isEmpty(vValue) Then
HasValue = False
Else
HasValue = True
End If
Exit Function
Err:
If IsArray(vValue) Or IsObject(vValue) Then
HasValue = True
Else
HasValue = False
End If
End Function
并停止在该行
elseif的ISNULL(VVALUE)或者LEN(VVALUE)= 0然后
VVALUE是一个自定义对象,包含一些属性(显然,不是null)。
虽然我没有在那里放置任何中断点,但应用程序停在那里,并提醒错误对话框说“运行时错误'438':对象不支持此属性或方法”。
我们有错误处理代码,但应用程序没有运行到错误处理代码。它只是停在导致错误的行上,我不得不停止应用程序。
你对此有什么想法吗? 非常感谢。
何:拆除部分'或者莱恩(VVALUE)= 0',然后尝试。 – Mudassir 2011-03-07 04:31:49
关于这个问题有几件事会混淆这个问题。 1.它使用'IsMissing',但'vValue'没有声明为'Optional'。 'IsMissing'用于检测没有传递给方法的'Optional Variant'参数。 2.你的意见说'vValue'是一个对象,但代码使用'IsNull'和'Len'来测试它。对象引用使用'Is Nothing'进行测试。这段代码是逐字地发布的,还是被模糊了? – JeffK 2011-03-07 15:44:33
是的,代码是从我维护的应用程序逐字复制的。我对开发者实施的方式感到非常惊讶。无论如何,请忽略此处的逻辑。我只是想知道为什么应用程序不会遇到错误处理代码。谢谢 – nobitavn94 2011-03-09 06:21:46