VB6调试 - 不会转到错误处理代码

nob*_*n94 2 vb6 dll activex

我正在维护一个vb6项目(ActiveX DLL).调试时,应用程序运行以下功能:

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
Run Code Online (Sandbox Code Playgroud)

它停在了线上

ElseIf IsNull(vValue)或Len(vValue)= 0然后

vValue是一个自定义对象,包含一些属性(显然,不是null).

虽然我没有在那里设置任何断点,但应用程序停在那里并警告错误对话框说"运行时错误'438':对象不支持此属性或方法".

我们有错误处理代码,但应用程序没有运行到错误处理代码.它只是停在导致错误的行,我不得不停止应用程序.

你对此有什么想法吗?非常感谢你.

小智 6

至于让弹出窗口在调试器中运行,它可能与IDE中的"错误捕获"设置有关.转到工具 - >选项 - >常规,查看"错误陷印"下选择的内容.乍一看,错误处理程序在发生错误时测试vValue似乎很奇怪.基于我对此方法的有限理解,将IsArray和IsObject条件移动到主要测试逻辑中,对我来说更有意义.只是我的2美分:)