错误捕获

使用 On Error GoTo 语句捕获错误,并将过程流定向到过程中错误处理语句的位置。 例如,以下语句将流定向到标签行:

On Error GoTo ErrorHandler

要确保在过程中每个错误处理标签名称是唯一的,而不会与过程中的其他任何元素发生冲突;并且在名称后面追加冒号。 在过程中,请将 Exit SubExit 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

Err 对象的 Raise 方法将生成指定的错误。 Err 对象的 Number 属性返回最近一次运行时错误所对应的编号,Description 属性返回给定错误所对应的消息文本。

注意

  • 在 Access 版本 1.x 和 2.0 中,你可能已使用 Error 语句生成错误,使用 Err 函数返回错误号,使用 Error 函数返回错误说明。 依赖于 Error 语句和 Error 函数的现有错误处理代码将继续工作。 不过,在编写新代码时,最好使用 Err 对象及其属性和方法。

  • Access 的 1.x 和 2.0 版本为所有自动化仅返回一个错误, (以前称为 OLE 自动化) 错误。 生成错误的 COM 组件应用程序现在也返回相同的错误信息,您在该应用程序中工作时也会收到该错误信息。 您可能需要重写已有的错误处理代码,才能正确地处理新的“自动化”错误。

  • 如果希望返回与 Access 错误或数据访问对象关联的描述性字符串, (DAO) 错误,但该错误实际上未在代码中发生,可以使用 AccessError 方法返回字符串。

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。