Поскольку это неуклюже описывать словами, вот несколько примеров, показывающих, где вы можете использовать On Error GoTo 0
для локализованной, структурированной обработки ошибок.
Первым является Property Get
в классе («MicroDOM»), который реализует облегченный DOM, основанный на иерархии подклассовых коллекций.В этом случае нам нужна попытка сослаться на отсутствующий дочерний элемент по имени вместо индекса, чтобы создать пустой (без атрибутов или дочерних элементов) дочерний элемент:
Public Property Get Child(ByVal Key As Variant) As MicroDOM
If mChildren Is Nothing Then
Set mChildren = New Collection
End If
On Error Resume Next
Set Child = mChildren(Key)
If Err Then
On Error GoTo 0
If VarType(Key) = vbString Then
Key = Trim$(Key)
Set Child = New MicroDOM
Child.Key = Key
mChildren.Add Child, Key
Else
Err.Raise 9 'Subscript error as thrown by the Collection.
End If
End If
End Property
Второй - встроенный код, который удаляет файл, если онpresent:
On Error Resume Next
Kill strFilePath
On Error GoTo 0
Третий - встроенный код, который выполняет действие только в том случае, если файл присутствует:
On Error Resume Next
GetAttr strFilePath
If Err Then
On Error GoTo 0
ProcessTheData strFilePath
End If
On Error GoTo 0
Хотя он может показаться неудобным для непосвященных (выполнение On Error GoTo 0
в двух местах) результат менее неуклюжий и более структурированный, чем плоты On Error GoTo Label
, которые прыгают вперед и назад для обработки различных исключений.
Бонус в том, что вы получаете переносимость и в VBScript, так как On Error GoTo Label
там вообще не является допустимой конструкцией.