У меня вопрос: как правильно вызвать ошибки в классе, чтобы вызывающий объект, который создает экземпляр этого класса, мог использовать правильные методы обработки ошибок?
Я обновляю старый код спагетти VB6, который неиспользовать классы.В прошлом я всегда использовал On Error Resume Next и On Error Перейти к myLabel для устранения ошибок, когда альтернативы не былилюбой очиститель для моего кода.
Однако я не могу заставить вызывающего обработать ошибки, потому что, если я вызываю ошибку в методе или свойстве моего класса, ошибка возникает независимо от того, использовал ли я On Error оператор, чтобы поймать его от вызывающей стороны.Пример кода будет выглядеть примерно так:
MyClass:
Public Sub Bar()
If valid Then
'some code here
Else
Err.Raise 5
End if
End Sub
MainForm:
Private Sub CallFoo()
Dim foo as New MyClass
On Error Goto fooliure 'Starts ignoring errors
Call foo.Bar() 'Program stops with an exception
On Error Goto 0 'Ends error handling
Exit Sub
fooliure:
'Error handling code
End Sub
Также Microsoft говорит, что именно так они и собирались обрабатывать ошибкибыть выполненным в VB 6.0, как упомянуто здесь .
На данный момент я рассматриваю возможность использования объекта в моем классе, который бы собирал ошибки, которые могут быть получены вызывающей стороной.Если я смогу избежать этого, я так и сделаю, но мне пока не повезло найти ответ.