如以下示例程序:
Private Sub Command1_Click()
Dim I As Long
For I = 1 To 10
On Error GoTo NextLine
Err.Raise vbObjectError, , "err " & I
NextLine:
If Err.Number <> 0 Then
Debug.Print Err.Description
Else
End If
On Error GoTo 0
Next
End Sub似乎应该打印出 err1 err2 err3 .... err10 ,但实际上打印出 err1 以后就会抛出一个未处理的错误而导致程序中止,也就是说第一次捕获到错误以后,错误捕获就无法再次捕获错误了,不知道是什么原因,但是如果把 On Error Goto NextLine 改为 On Error Resume Next,则可以捕获到10个错误,请DX指点怎么回事。
Private Sub Command1_Click()
Dim I As Long
For I = 1 To 10
On Error GoTo NextLine
Err.Raise vbObjectError, , "err " & I
NextLine:
If Err.Number <> 0 Then
Debug.Print Err.Description
Else
End If
On Error GoTo 0
Next
End Sub似乎应该打印出 err1 err2 err3 .... err10 ,但实际上打印出 err1 以后就会抛出一个未处理的错误而导致程序中止,也就是说第一次捕获到错误以后,错误捕获就无法再次捕获错误了,不知道是什么原因,但是如果把 On Error Goto NextLine 改为 On Error Resume Next,则可以捕获到10个错误,请DX指点怎么回事。
Private Sub Command1_Click()
On Error GoTo NextLine Dim I As Long
For I = 1 To 10
......
......
Next
exit sub
NextLine:
Debug.Print Err.Description
exit sub
End Sub
Private Sub Command1_Click()
On Error GoTo NextLine
Dim I As Long
For I = 1 To 10
Err.Raise vbObjectError, , "err " & I
NextLine:
If Err.Number <> 0 Then
Debug.Print Err.Description
Next
End Sub
Private Sub Command1_Click()
Dim I As Long
I = 1
myerr:
Do While I <= 10
On Error GoTo NextLine
Err.Raise vbObjectError, , "err " & I
Loop
NextLine:
If Err.Number <> 0 Then
Debug.Print Err.Description
I = I + 1
Resume myerr
End If
End Sub
Dim I As Long
For I = 1 To 10
On Error GoTo NextLine
Err.Raise vbObjectError, , "err " & I
NextLine:
If Err.Number <> 0 Then
Debug.Print Err.Description
Resume ErrResume
End If
ErrResume:
Next
End Sub可以结分了。