| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 778 人关注过本帖
标题:关于On Error GoTo ,为何在一个过程中连续使用两次就会出错。
只看楼主 加入收藏
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:6 
关于On Error GoTo ,为何在一个过程中连续使用两次就会出错。
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。但是连续执行就会出错,不知为什么。
2015-11-25 15:38
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:0 
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.
2015-11-25 16:41
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
收藏
得分:0 
回复 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
2015-11-26 12:18
hjxlj
Rank: 10Rank: 10Rank: 10
来 自:江西
等 级:贵宾
威 望:14
帖 子:292
专家分:1519
注 册:2013-6-25
收藏
得分:0 
稍后答复你,现在忙碌中……

本人QQ:775420425
2015-11-27 08:56
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
收藏
得分:0 
回复 4楼 hjxlj
您忙完了吗啊?
2015-11-27 15:54
xiangyue0510
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:86
帖 子:938
专家分:5244
注 册:2015-8-10
收藏
得分:20 
程序代码:
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
2015-11-27 16:18
xingming022
Rank: 1
等 级:新手上路
帖 子:103
专家分:9
注 册:2015-1-26
收藏
得分:0 
回复 6楼 xiangyue0510
非常感谢您的回复,我的问题已经解决了。但是

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

为何第一个错误处用 On Error Resume Next可以满足错误捕获条件?
 
2015-11-27 17:02
快速回复:关于On Error GoTo ,为何在一个过程中连续使用两次就会出错。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015735 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved