Поделиться через


Перехват ошибок

Используйте инструкцию On Error GoTo для перехвата ошибок и направления потока процедуры в расположение инструкций обработки ошибок в процедуре. Например, следующая инструкция направляет поток к строке метки:

On Error GoTo ErrorHandler

Обязательно присвойте каждой метке обработчика ошибок в процедуре уникальное имя, которое не будет конфликтовать с любым другим элементом в процедуре, и убедитесь, что к имени добавляется двоеточие. В процедуре поместите инструкцию Exit Sub или Exit Function перед меткой обработчика ошибок, чтобы процедура не выполняла код проверки ошибок, если ошибка не возникает.

Sub CausesAnError() 
    ' Direct procedure flow. 
    On Error GoTo ErrorHandler 
    ' Raise division by zero error. 
    Err.Raise 11 
    Exit Sub 
 
ErrorHandler: 
    ' Display error information. 
    MsgBox "Error number " & Err.Number & ": " & Err.Description 
    ' Resume with statement following occurrence of error. 
    Resume Next 
End Sub

Метод Raise объекта Err создает указанную ошибку. Свойство Number объекта Err возвращает число, соответствующее последней ошибке во время выполнения; Свойство Description возвращает соответствующий текст сообщения для заданной ошибки.

Примечание.

  • В версиях 1.x и 2.0 Access вы могли использовать инструкцию Error для создания ошибки, функцию Err для возврата номера ошибки и функцию Error для возврата описания ошибки. Существующий код обработки ошибок, который использует инструкцию Error и функцию Error, будет продолжать работать. Однако при написании нового кода лучше использовать объект Err, его свойства и методы.

  • В версиях 1.x и 2.0 Access возвращалась только одна ошибка для всех ошибок автоматизации (ранее — OLE-автоматизация). Приложение-компонент COM, создающее ошибку, теперь возвращает те же сведения об ошибке, которые вы получили бы, если бы вы работали в этом приложении. Для правильной обработки новых ошибок может потребоваться переписать существующий код обработки ошибок службы автоматизации.

  • Если вы хотите вернуть описательную строку, связанную с ошибкой Access или ошибкой объектов доступа к данным (DAO), но эта ошибка фактически не произошла в коде, можно использовать метод AccessError для возврата строки.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.