0
我有一个类c1
,它调用另一个类c2
的方法。我想要c2
生成的错误被c1
捕获和处理,这会将错误的描述添加到集合中。代码相关的功能如下:在抛出异常时VBA中的错误处理不一致
C1:
Private Function doSomething(ByRef rs As DAO.Recordset) As Collection
Dim errors as Collection
Set errors = New Collection
On Error GoTo logError
Do While Not rs.EOF
c2.doSomethingElse rs!someValue
GoTo continueLoop
logError:
errors.Add (Err.Description)
continueLoop:
rs.MoveNext
Loop
Set doSomething = errors
End Function
C2:
Public Sub doSomethingElse(someValue as string)
If Not xyz(someValue) Then
Err.Raise 516, "doSomethingElse", "xyz: " & someValue
Else
DoOtherThings
End Sub
当我设置错误捕获到 “处理错误破发”,有时Err.Raise
在doSomethingElse
会将错误提高到doSomething
,但有时它只会停止执行,并显示运行时错误,就像doSomething
没有On Error
条件一样。 rs
中的第一条记录通常会导致错误提升到doSomething
,但第二条记录总是会导致运行时错误。有时第一个记录也会引发运行时错误。
在doSomething
的第一次迭代Do While
循环之后发生了什么事情,该循环关闭了错误处理?
我把它移到循环中,但我得到了同样的结果:第一次工作,然后第二次通过循环我得到运行时错误,没有处理。 – sigil
什么是错误? –
这是用户定义的错误,我扔在'doSomethingElse()'。 – sigil