QTP 拥有3种不同的错误处理机制:
1、场景恢复机制
2、VBS的Error 对象
3、缺省的错误处理【Settings 里的runonError选项所指定的设置】

它们的优先级分别是:
1、场景恢复机制的触发及处理
2、VBS 的error对象的捕获
3、场景恢复机制的处理后行为【即场景得到恢复后脚本的继续执行操作,不明白的去创建一个恢复场景就知道了】
4、缺省的错误处理

它们的作用范围:
1、场景恢复是全局的。但是只针对指定的场景错误,而不是所有的脚本错误都会触发它【如:语法、函数错误】
2、VBS是局部范围有效。即对当前Action、当前Function有效,对Lib及其它Action无效
3、缺省错误处理是全局的。所有范围内的所有错误都会被捕获【包括语法错误】

它们的具体应用:
1、场景恢复:
其所支持的几种触发场景:
· Item in list or menu is not unique
· Item in list or menu not found
· More than one object responds to the physical description
· Object is disable
· Object not found
· Object not visible
. Any Error
其所支持的几种处理方式:
· Keyboard or mouse operation ''键盘鼠标处理方式
· Close application process ’‘执行关闭指定进程
· Function call ’‘调用预制的函数
· Restart Microsoft Windows ’‘重启机器
其所支持的错误处理后的脚本继续执行方式:
. Repeat current step and continue:重复当前步骤然后继续向下
. Proceed to next step:处理下一步
. Proceed to next action or component iteration:处理下一个Action,或者组件的下一个循环
. Proceed to next test iteration:处理该测试的下一个循环
. Restart current test run:重新启动当前的测试
. Stop the test run:终止测试运行
其所支持的应用场景的方式:
. On every step,只要出现恢复的场景,就执行场景恢复中的动作,然后继续。
. On error,在出现错误的时候,才查找是否符合待恢复的场景,如果是则执行恢复操作。
. Never,无论如何,都不运行场景恢复机制。

2、VBS 的Error 对象使用:
Err对象语句:
On Error Resume Next ''执行过该语句后,在遇到错误时将忽略并继续执行其后的语句
On Error GoTo 0 ‘’执行过该语句后相对于取消On Error Resume Next语句的设置,它会释放之前的错误给上层错误机制
Err对象的属性:
Err.Number ‘’执行脚本后的错误代码,为0时表示没有错误
Err.Description ‘’具体错误代码的错误描述
Err.Source ‘’引发该错误的应用程序
Err.HelpContext ‘’与该错误有关的上下文内容
Err.HelpFile ‘’与该错误相关的帮助文档的路径
Err对象的方法:
Err.Clear ‘’清空错误代码,即置0
Err.raise number, source, description, helpfile, helpcontext ‘’释放一个自定义的错误,其中number为必选

3、缺省错误处理的4种方式:
. ShowDialog ''弹框
. NextIteration ‘’执行下一个迭代
. Stop ‘’结束当前测试
. NextStep(default) ‘’执行下一步