Error.Source 属性 (DAO)

适用于:Access 2013、Office 2013

返回最初生成错误的对象或应用程序的名称。

语法

表达式 。源

表达 一个代表 Error 对象的变量。

备注

Source 属性值通常为对象的类名称或程序 ID。 在代码无法处理另一个应用程序中的对象生成的错误时,使用 Source 属性可以向用户提供信息。

例如,如果访问 Microsoft Excel 并生成“按零除”错误,则 Microsoft Excel 会将 Error.Number 设置为该错误的 Microsoft Excel 代码,并将 Source 属性设置为 Excel.Application。 请注意,如果错误是在 Microsoft Excel 调用的另一个对象中生成的,Microsoft Excel 会截获该错误,并仍将 Error.Number 设置为 Microsoft Excel 代码。 但是,其他 Error 对象属性(包括 Source)将保留生成错误的对象所设置的值。 Source 属性始终包含最初生成错误的对象的名称。

您可以基于所有错误文档,编写相应处理错误的代码。 如果您的错误处理程序失败,可以使用 Error 对象信息向用户描述错误,使用 Source 属性和其他 Error 属性向用户提供有关最初导致错误的对象、错误的说明等等的信息。

注意

[!注释] 在处理访问其他对象的过程中生成的错误时,最好使用 On Error Resume Next 结构,而不使用 On Error GoTo。 如果在每次与对象交互后检查 Error 对象属性,可以清楚地了解发生错误时代码正在访问的对象。 因此,您可以确定哪个对象在 Error.Number 中放置了错误代码,以及最初生成此错误的是哪个对象 (Error.Source)。

示例

以下示例强制生成一个错误,然后捕获错误,并显示生成的 Error 对象的 DescriptionNumberSourceHelpContextHelpFile 属性。

    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