Я понимаю, что это - более старая среда программирования, но я должен очистить некоторых VB6
код и я находим, что большая часть из него использует:
On Error Resume Next
Из чего общее согласие об использовании On Error Resume Next
?
Конечно, если бы существует ошибка, Вы хотели бы, чтобы приложение остановило то, что это делало, откатывайте любые изменения данных и сообщите пользователю ошибки вместо просто возобновления.
Когда это хорошая идея использовать On Error Resume Next
?
Я нашел его полезным в функциях, где ошибка не гарантирует, что пользователь будет прерван с решением проблемы. Хороший пример - событие изменения размера. Если вы допустили ошибку или возникла проблема с событием изменения размера, вы, вероятно, не хотите, чтобы пользователь это увидел, поскольку это, вероятно, не повлияет на функциональность.
Я бы сказал, что в целом используйте его экономно.
Почти никогда - если не используется сознательно, например, на строка, в которой успешный вызов устанавливает конкретное возвращаемое значение, а последующий код обрабатывает возвращаемое значение, чтобы учесть случай ошибки.
Совершенно разумно использовать On Error Resume Next для реализации локальной структурированной обработки ошибок. Это включает в себя тестирование исключения и, конечно же, действия в соответствии с ним, а также последующее снятие механизма с охраны. Пример:
On Error Resume Next
GetAttr strFilePath
If Err Then
On Error GoTo 0
'Deal with "no file" scenario.
Else
On Error GoTo 0
'Open and process the file.
End If
Это простой пример, в котором ожидается исключение только одного вида. В некоторых случаях необходимо протестировать Err.Number для определенных значений и предпринять различные действия на их основе.
Неструктурированный подход, основанный на метке GoTo , также часто может работать, но в большинстве случаев он вряд ли лучше. В VBScript показанный выше шаблон является единственной формой обработки исключений, которая у вас есть, поскольку нет GoTos или меток.
Что нежелательно, так это включение явного тестирования исключений во главе каждой процедуры и его игнорирование ... своего рода подход Trust the Force, Люк к попытке замаскировать ошибки кодирования.