错误捕获

expandtri全部显示

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

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 属性返回给定错误所对应的消息文本。

注释

?在 Microsoft Access 1.x 和 2.0 版本中,可能已经使用 Error 语句来生成错误,使用 Err 函数来返回错误编号,使用 Error 函数来返回错误说明。依赖于 Error 语句和 Error 函数的现有错误处理代码将继续工作。不过在编写新代码时,最好使用 Err 对象及其属性和方法。
?Microsoft Access 1.x 和 2.0 版本对于所有的自动化(以前称为 OLE 自动化)错误,仅返回一个错误。产生错误的 COM 组件应用程序也将返回一个错误信息,它与在该应用程序中工作时收到的错误信息相同。可能需要重写已有的错误处理代码,才能正确地处理新的“自动化”错误。
?如果希望返回与 Microsoft Access 错误或数据访问对象 (DAO) 错误相关的说明性字符串,但该错误尚未在代码中实际发生,那么可以使用 AccessError 方法来返回字符串。