Различие между Resume и Goto в блоке обработки ошибок

Я понимаю, что в следующем примере оператор 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

Мой вопрос - то, какое различие находится там в выполнении двух?

15
задан Richard Oliver 8 June 2010 в 11:01
поделиться

1 ответ

Обе передают выполнение на метку Cleanup. Насколько я помню, единственные различия заключаются в том, что

  • Использование Goto не очищает объект Err (поэтому Err.Clear необходим, если вы используете Goto) и оставляет ваш обработчик ошибок отключенным. Если ошибка возникнет после метки Cleanup, она не будет обработана в ErrorHandler.
  • Использование Resume очищает объект Err и снова включает обработчик ошибок (он отключен, пока обрабатывает ошибки). Если ошибка возникает после Cleanup, она будет обработана в ErroHandler

В руководстве VB6 запись для оператора Resume не объясняет эти различия.

23
ответ дан 1 December 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: