Обработчик ошибок - выходит из Sub по сравнению с концом Sub

VS Code универсальная официальная мультилиния комментирует переключатель.

macOS: Выберите блок кода тогда вЊ ˜ + /

Windows: Выберите блок кода тогда Ctrl + /

20
задан AnthonyWJones 4 September 2009 в 12:06
поделиться

2 ответа

Ваш ярлык ProcExit - это ваше место, где вы освобождаете все ресурсы независимо от того, произошла ошибка или нет. Например:

Public Sub SubA()
  On Error Goto ProcError

  Connection.Open
  Open File for Writing
  SomePreciousResource.GrabIt

ProcExit:  
  Connection.Close
  Connection = Nothing
  Close File
  SomePreciousResource.Release

  Exit Sub

ProcError:  
  MsgBox Err.Description  
  Resume ProcExit
End Sub
26
ответ дан 30 November 2019 в 00:48
поделиться

Обычно, если у вас есть соединения с базой данных или другие объекты, объявленные, которые, независимо от того, использовались ли они безопасно или созданы до вашего исключения, должны быть очищены (удалены), а затем возвращен код обработки ошибок к точке входа ProcExit позволит вам выполнить сборку мусора в обоих случаях.

Если вы выйдете из процедуры, перейдя в Exit Sub, вы можете рискнуть получить неприятное скопление созданных экземпляров объектов, которые просто сидят без дела. в памяти вашей программы.

1
ответ дан 30 November 2019 в 00:48
поделиться
Другие вопросы по тегам:

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