编程中存在三种类型的错误:

  • (a) 语法错误
  • (b) 运行时错误
  • (c) 逻辑错误。

语法错误

语法错误,也称为解析错误,发生在 VBScript 的解释时。例如,以下行会导致语法错误,因为它缺少右括号。

Function ErrorHanlding_Demo()
   dim x,y
   x = "Tutorialspoint"
   y = Ucase(x
End Function

 

运行时错误

运行时错误,也称为异常,发生在执行期间,在解释之后。

例如,以下行会导致运行时错误,因为这里的语法是正确的,但在运行时它试图调用 fnmultiply,这是一个不存在的函数。

Function ErrorHanlding_Demo1()
   Dim x,y
   x = 10
   y = 20
   z = fnadd(x,y)
   a = fnmultiply(x,y)
End Function

Function fnadd(x,y)
   fnadd = x + y
End Function

 

逻辑错误

逻辑错误可能是最难追踪的错误类型。这些错误不是语法或运行时错误的结果。相反,当您在驱动脚本的逻辑中犯了错误并且您没有得到预期的结果时,它们就会发生。

您无法捕获这些错误,因为这取决于您的业务需求,您希望在程序中放入哪种类型的逻辑。

例如,将数字除以零或编写的脚本进入无限循环。

 

错误对象

假设如果我们有一个运行时错误,那么执行会通过显示错误消息来停止。作为开发人员,如果我们想捕获错误,则使用错误对象。

例子

在以下示例中,Err.Number给出错误编号,Err.Description给出错误描述。

Err.Raise 6   ' Raise an overflow error.
MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
Err.Clear   ' Clear the error.

 

错误处理

VBA 启用错误处理例程,也可用于禁用错误处理例程。如果没有 On Error 语句,发生的任何运行时错误都是致命的:显示错误消息,执行突然停止。

On Error { GoTo [ line | 0 | -1 ] | Resume Next }

 

编号 关键字和描述
1

转到线

启用从所需行参数中指定的行开始的错误处理例程。指定的行必须与 On Error 语句在同一过程中,否则将发生编译时错误。

2

转到 0

禁用当前过程中启用的错误处理程序并将其重置为 Nothing。

3

转到-1

禁用当前过程中启用的异常并将其重置为 Nothing。

4

继续下一步

指定当发生运行时错误时,控件转到发生错误的语句之后的语句,并从该点继续执行。

例子

Public Sub OnErrorDemo()
   On Error GoTo ErrorHandler   ' Enable error-handling routine.
   Dim x, y, z As Integer
   x = 50
   y = 0
   z = x / y   ' Divide by ZERO Error Raises
  
   ErrorHandler:    ' Error-handling routine.
   Select Case Err.Number   ' Evaluate error number.
      Case 10   ' Divide by zero error
         MsgBox ("You attempted to divide by zero!")
      Case Else
         MsgBox "UNKNOWN ERROR  - Error# " & Err.Number & " : " & Err.Description
   End Select
   Resume Next
End Sub

 

原创文章,转载请注明出处:http://www.nwumba.cn/article/33/