我正在維護一個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