注册 登录
编程论坛 VB6论坛

关于On Error GoTo ,为何在一个过程中连续使用两次就会出错。

xingming022 发布于 2015-11-25 15:38, 778 次点击
Private Sub Form_Load()
On Error GoTo 33 'On Error Resume Next
Open "\\Epdi1\A.txt" For Append As #2
Print #2, Now
Close #2
33:

On Error GoTo 44 'On Error Resume Next
Open "\\Epdi1\A.txt" For Append As #2
Print #2, Now
Close #2
44:
End Sub
上面的例子中\\Epdi1\A.txt地址是不存在的,所以会出错,进而执行On Error GoTo。但是连续执行就会出错,不知为什么。
6 回复
#2
xiangyue05102015-11-25 16:41
Private Sub Form_Load()
On Error GoTo 33 'On Error Resume Next
Open "\\Epdi1\A.txt" For Append As #2
Print #2, Now
Close #2
33:
Resume Next

On Error GoTo 44 'On Error Resume Next
Open "\\Epdi1\A.txt" For Append As #2
Print #2, Now
Close #2
44:
End Sub

这个帖子六楼说的比较透彻。
http://bbs.
#3
xingming0222015-11-26 12:18
回复 2楼 xiangyue0510
感谢您的回复,如果用了Resume Next,会重新找到错误的地方的下一行重头开始执行语句,如果程序是下面这样就进入了死循环了,该如何处理?
Private Sub Form_Load()

On Error GoTo 33
    Open App.Path & "\freezjc1.license" For Input As #1'没有freezjc1.license这个文件的
        Do While Not EOF(1)
            Input #1, jxXLM1
            jxXLM2 = jxXLM2 & jxXLM1
        Loop
    Close #1
33:

Resume Next

On Error GoTo 44 'On Error Resume Next
    Open "\\Epdi2\A.txt" For Append As #2'没有这个地址的
    Print #2, Now
    Close #2
44:

End Sub
#4
hjxlj2015-11-27 08:56
稍后答复你,现在忙碌中……
#5
xingming0222015-11-27 15:54
回复 4楼 hjxlj
您忙完了吗啊?
#6
xiangyue05102015-11-27 16:18
程序代码:

Private Sub Form_Load()

On Error Resume Next
    Open App.Path & "\freezjc1.license" For Input As #1 '没有freezjc1.license这个文件的
    If Err.Number = 0 Then
        Do While Not EOF(1)
            Input #1, jxXLM1
            jxXLM2 = jxXLM2 & jxXLM1
        Loop
        Close #1
    End If

On Error GoTo 44 'On Error Resume Next
    Open "\\Epdi2\A.txt" For Append As #2 '没有这个地址的
    Print #2, Now
    Close #2
44:

End Sub
#7
xingming0222015-11-27 17:02
回复 6楼 xiangyue0510
非常感谢您的回复,我的问题已经解决了。但是

您之前给的连接中说:满足错误捕获必须满足2个条件. 一个是有错误陷阱是enable, 同时错误状态不是active.这样的目的是防止错误捕捉死循环.通过resume next可以让active为false。

为何第一个错误处用 On Error Resume Next可以满足错误捕获条件?
 
1