Я где-то читал, что выход из блока обработки ошибок не рекомендуется. К сожалению, они не дали объяснений, почему?Почему не удается выйти из подкаталога внутри блока обработчика ошибок?
Мне было любопытно, почему это так. Я нашел что-то связанное с этим в обсуждении на "On Error Goto 0" before Exit Function, но не уверен, что это окончательный ответ. Они говорят о том, что объект Err не очищается. Это единственная проблема, и если это так, то работа вокруг?
Это не так? Если да, то каков рекомендуемый способ выхода из функции? Я не являюсь большим сторонником перехода к заявлениям, они делают код более сложным.
Private Sub Foo2()
On Error Resume Next
'Multiple lines of code
If Not Foo(arg1,arg2) Then
Exit Sub 'Can I exit here?
End If
'Multiple lines of code
On Error GoTo 0
End Sub
10 'On Error Goto' абсолютно нормально, если используется с дисциплиной. Это эквивалент блока «Try ... Catch» на более современных языках. Определенно лучше, чем 'On Error Resume Next' – MarkJ
' On Error Resume Next' является чистым злом, когда применяется к нескольким строкам кода, которые могут вызвать исключение, которое вы иначе не можете предотвратить. – Dabblernl