51Testing软件测试论坛

标题: 请教下On Error Resume Next的用法 [打印本页]

作者: zte_boy    时间: 2008-4-2 13:41
标题: 请教下On Error Resume Next的用法
On Error Resume Next
            
                                        'Try to create an instanse of the reporter engine's class
                                        Execute "Set oReporter = New " & sType & "Engine"
               
                                        If Err.Number <> 0 Then
                                                bResult = False
                                                Reporter.ReportEvent micFail, "ReporterManagerClass StartEngine", "Failed to create instance : " & sType
                                        End If

                        On Error GoTo 0

如果包含在On Error Resume Next和On Error GoTo 0之间的代码运行出错了,QTP会如何响应呢?
作者: hsjzfling    时间: 2008-4-2 14:28
尝试一下不就知道了么。。。

有错就会继续执行下一步~~但是要注意,这两者之间一般都用来调用函数的,否则goto 0就没意义了
作者: zte_boy    时间: 2008-4-2 23:46
能否解释下,如果单用On Error Resume Next是什么效果
加了On Error GoTo 0又是什么效果呢
作者: getfly    时间: 2008-4-3 08:43
个人看法,请指正:
On Error Resume Next用来抛出错误。前提是如果有错误的话。
On Error GoTo 0 用来表示继续执行不会因为这里的错误而导致程序停下来。

不知道这样理解对不对。
作者: loho1968    时间: 2008-4-3 09:46
On Error Resume Next 表示出现错误后,继续执行程序
VB中还有 On Error goto aaa
上述2种都叫“错误陷阱”,用于出现错误时进行处理
On Error Resume GoTo 0 表示取消对错误陷阱的设置。
作者: hsjzfling    时间: 2008-4-3 10:21
写个简单的例子来说明吧,理解起来更容易点~
On Error Resume Next
        Err.Clear
        msgbox "Test is running now."
        Call ErrFunc
        If Err.Number<>0 Then
                msgbox "Error occured indeed"
                msgbox "The error description is: "&vbcrlf&Err.Description
        End If
On Error GoTo 0

Function ErrFunc()
        msgbox "ErrFunc function does work."
        Browser("I'm not in the OR~").Page("xx").WebList("oo").Select 1000 'Error will occur here
        msgbox "My God...No Error occurred?!"
End Function
作者: hsjzfling    时间: 2008-4-3 10:32
LZ可以根据这个小例子自己尝试下加不加On Error GoTo 0有什么区别,也可以看看注释掉ErrFunc中那句会报错的代码之后,程序又是怎样运行的~
作者: zte_boy    时间: 2008-4-3 14:55
我试过了,没发现有什么区别啊,呵呵
作者: hsjzfling    时间: 2008-4-3 15:08
你在On Error GoTo 0下面再随便加句会报错的代码,比如再写个Call ErrFunc,然后再分别执行有On Error GoTo 0与没有的区别~~

5楼也说到了,On Error GoTo 0就是用来还原On Error设置的,和On Error Resume Next一起使用,用来限定On Error Resume Next生效的范围
作者: 淡淡的心情    时间: 2008-4-3 15:40
HAPPY!!又学到新知识了!
作者: zte_boy    时间: 2008-4-3 15:53
谢谢,明白了
顺便问下,创建文本日志的时候,怎么自动获知脚本运行成功,日志记录pass
脚本运行失败,日志记录fail呢
作者: hsjzfling    时间: 2008-4-3 16:48
通过使用reporter对象来实现,具体用法可以查看帮助




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2