Я понимаю, что в следующем примере оператор Resume должен использоваться вместо Оператора перехода.
Sub Method()
On Error Goto ErrorHandler
...
CleanUp:
...
Exit Function
ErrorHandler:
Log error etc
Err.Clear 'Is this line actually necessary?'
Resume CleanUp 'SHOULD USE THIS'
Goto CleanUp 'SHOULD NOT USE THIS'
End Sub
Мой вопрос - то, какое различие находится там в выполнении двух?
Обе передают выполнение на метку Cleanup
. Насколько я помню, единственные различия заключаются в том, что
Goto
не очищает объект Err (поэтому Err.Clear
необходим, если вы используете Goto
) и оставляет ваш обработчик ошибок отключенным. Если ошибка возникнет после метки Cleanup
, она не будет обработана в ErrorHandler
. Resume
очищает объект Err и снова включает обработчик ошибок (он отключен, пока обрабатывает ошибки). Если ошибка возникает после Cleanup
, она будет обработана в ErroHandler
В руководстве VB6 запись для оператора Resume не объясняет эти различия.