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


Свойство Error.Source (DAO)

Область применения: Access 2013, Office 2013

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

Синтаксис

expression . Источник

Выражение Переменная, представляющая объект Error .

Замечания

Значение свойства Source обычно является именем класса или программным идентификатором объекта. Используйте свойство Source , чтобы предоставить пользователям сведения, если код не может обработать ошибку, созданную в объекте в другом приложении.

Например, если вы обращаетесь к Microsoft Excel и он создает ошибку "Деление на ноль", Microsoft Excel задает значение Error.Number в код Microsoft Excel для этой ошибки, а свойство Source — Excel.Application. Обратите внимание, что если ошибка создается в другом объекте, вызываемом Microsoft Excel, Microsoft Excel перехватывает ошибку и по-прежнему задает значение Error.Number в коде Microsoft Excel. Однако другие свойства объекта Error (включая источник) будут сохранять значения, заданные объектом, который создал ошибку. Свойство Source всегда содержит имя объекта, который первоначально создал ошибку.

На основе всей документации по ошибкам можно написать код, который будет обрабатывать ошибку соответствующим образом. Если обработчик ошибок завершается сбоем, можно использовать сведения об объекте Error , чтобы описать ошибку пользователю, используя свойство Source и другие свойства Error , чтобы предоставить пользователю сведения о том, какой объект изначально вызвал ошибку, описание ошибки и т. д.

Примечание.

Конструкция On Error Resume Next может быть предпочтительнее , чем On Error GoTo при работе с ошибками, созданными при доступе к другим объектам. Проверка свойства Объекта Error после каждого взаимодействия с объектом устраняет неоднозначность относительно того, к какому объекту обращается код при возникновении ошибки. Таким образом, можно убедиться, какой объект поместил код ошибки в Error.Number, а также какой объект изначально создал ошибку (Error.Source).

Пример

В этом примере выполняется принудительное выполнение ошибки, ее перехват и отображаются свойства Description, Number, Source, HelpContext и HelpFile результирующего объекта Error .

    Sub DescriptionX() 
     
     Dim dbsTest As Database 
     
     On Error GoTo ErrorHandler 
     
     ' Intentionally trigger an error. 
     Set dbsTest = OpenDatabase("NoDatabase") 
     
     Exit Sub 
     
    ErrorHandler: 
     Dim strError As String 
     Dim errLoop As Error 
     
     ' Enumerate Errors collection and display properties of 
     ' each Error object. 
     For Each errLoop In Errors 
     With errLoop 
     strError = _ 
     "Error #" & .Number & vbCr 
     strError = strError & _ 
     " " & .Description & vbCr 
     strError = strError & _ 
     " (Source: " & .Source & ")" & vbCr 
     strError = strError & _ 
     "Press F1 to see topic " & .HelpContext & vbCr 
     strError = strError & _ 
     " in the file " & .HelpFile & "." 
     End With 
     MsgBox strError 
     Next 
     
     Resume Next 
     
    End Sub