я часто сталкиваюсь с этой ситуацией в своих приложениях VB6Как вы обрабатываете ошибки в обработчиках ошибок в VB6?
Private Sub DoSomething
On Error Goto err1
Call ProcessLargeBatch1
Call ProcessLargeBatch2
'... more ...'
Exit Sub
err1:
Call Cleanup 'Specific for DoSomething'
Call HandleError 'General error handling: Logging, message box, ...'
End Sub
Процедура очистки иногда возвращается действия, откат транзакции, удаляет временные файлы, и так далее. В большинстве случаев эта операция также может потерпеть неудачу.
Что мне делать в этом случае? Я добавлю On Error Resume Next
в обработчик ошибок, но удалит существующий объект Err
. Аналогичная проблема возникает при добавлении обработчика ошибок в Cleanup
.
Каков наилучший способ гарантировать, что исходные ошибки все еще обрабатываются/регистрируются?
EDIT: Еще одна проблема заключается в том, что я также хочу уведомить пользователя об ошибке. Иногда важно, что очистка происходит быстро, и я не хочу, чтобы окно сообщения блокировало приложение в течение длительного времени и выполняло очистку после того, как пользователь подтвердил ошибку.
спасибо. К сожалению, это не всегда помогает мне. Я добавил объяснение к моему вопросу. –