读书人

100分!简单的异常控制奇怪的有关问

发布时间: 2012-01-30 21:15:58 作者: rapoo

100分!简单的错误控制,奇怪的问题,在线等!
代码如下
Sub ddd()
On Error Goto ErrRec
For i = 0 to 100
... <代码段1>
GoTo NextStep
ErrRec:
... <代码段2>
NextStep:
... <代码段3>
Next
End Sub

问题出现在,在代码段1中如果出现错误,第一次出现的时候会跳转到ErrRec中,然后继续,但当代码段1中再次次出现错误的时候,就不会跳到ErrRec中了,为什么???

[解决办法]
错误处理应放在过程的最后,是正常的结构,一般建议这样写。
VB6允许错误处理跳出循环体外,处理完后,再返回循环体内。
最关键的是用Resume返回,它会重置错误监控状态,等待捕获下一个错误。不出意外,你的问题就在这里。
[解决办法]
Private Sub Command1_Click()
Dim i As Long, t As Long, k As Long
On Error Resume Next
For i = 0 To 10
'-------1
t = i / i
'-------2
If Err > 0 Then
t = 100
Err.Clear
End If
'-------3
k = k + t
Next
Print k
End Sub
忘记加ERR.CLEAR
我觉得用goto 感觉怪怪的 读起来稍嫌不方便
[解决办法]
我一般这样做:

Sub ddd()
On Error Goto ErrRec
For i = 0 to 100
... <代码段1>

... <代码段3>
Next
Exit Sub
ErrRec:
... <代码段2
Resume Next
End Sub

读书人网 >VB

热点推荐