Ошибка прерывания или 'Резюме Затем'

Я понимаю, что это - более старая среда программирования, но я должен очистить некоторых VB6 код и я находим, что большая часть из него использует:

On Error Resume Next

Из чего общее согласие об использовании On Error Resume Next?

Конечно, если бы существует ошибка, Вы хотели бы, чтобы приложение остановило то, что это делало, откатывайте любые изменения данных и сообщите пользователю ошибки вместо просто возобновления.

Когда это хорошая идея использовать On Error Resume Next?

5
задан Kate Gregory 9 April 2012 в 18:59
поделиться

3 ответа

Я нашел его полезным в функциях, где ошибка не гарантирует, что пользователь будет прерван с решением проблемы. Хороший пример - событие изменения размера. Если вы допустили ошибку или возникла проблема с событием изменения размера, вы, вероятно, не хотите, чтобы пользователь это увидел, поскольку это, вероятно, не повлияет на функциональность.

Я бы сказал, что в целом используйте его экономно.

5
ответ дан 18 December 2019 в 13:12
поделиться

Почти никогда - если не используется сознательно, например, на строка, в которой успешный вызов устанавливает конкретное возвращаемое значение, а последующий код обрабатывает возвращаемое значение, чтобы учесть случай ошибки.

2
ответ дан 18 December 2019 в 13:12
поделиться

Совершенно разумно использовать 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, Люк к попытке замаскировать ошибки кодирования.

7
ответ дан 18 December 2019 в 13:12
поделиться
Другие вопросы по тегам:

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