- 发行说明
- 入门指南
- 设置和配置
- 自动化项目
- 依赖项
- 工作流类型
- 文件比较
- 自动化最佳实践
- 源代码控件集成
- 调试
- 诊断工具
- 工作流分析器
- 变量
- 参数
- 导入的命名空间
- 控制流程
- 对象存储库
- 日志记录
- ScaleCoordinates 迁移工具
- ScreenScrapeJavaSupport 工具
- StudioPro
- 扩展程序
- 故障排除
“全局异常处理程序”是一种工作流类型,设计目的是在遇到执行错误时确定项目的行为。每个自动化项目仅可设置一个“全局异常处理程序”。
只有流程可以使用全局异常处理程序,库项目不能使用。
The Global Exception Handler has two arguments, that should not be removed.
第一个参数是 errorInfo,方向为“输入”,它会存储抛出的错误和失败的工作流的相关信息。您可在“日志消息”活动中设置要记录的错误级别。
对于 errorInfo 使用 ActivityInfo 属性可获取抛出异常的活动的名称,然后可以在“输出”面板中查看。
第二个参数 result 具有“输出”方向,当流程遇到错误时,第二个参数用于确定流程的下一个行为。可以将以下值赋值给 result 参数:
-
“继续”- 再次抛出异常。
-
“忽略”- 忽略异常,执行从下一活动起继续。
-
“重试”- 重试抛出异常的活动。对
errorInfo使用RetryCount方法来计算重试活动的次数。 -
“中止”- 执行在运行当前的“全局异常处理程序”后停止。
备注:任何工作流都可以在 Studio 中被标记为全局异常处理程序,但库项目和
Main.xaml除外
调试期间处理错误
当在调试过程中检测到异常时,系统会高亮显示发生故障的活动,使其暂停执行,并会在“局部”和“调用堆栈”面板中显示异常所属的类型及其详细信息。
Debugging actions like Continue, Stop, Retry, Ignore, Restart and Slow Step are available in the ribbon. Ignore is used for continuing the execution from the next activity.
“重试”按钮用于在没有全局异常处理程序介入的情况下重新尝试执行当前活动。“继续”操作将运行全局异常处理程序,同时考虑先前为 result 参数选择的值,即“继续”、“忽略”、“重试”或“中止”。
当将全局异常处理程序用于包含“尝试捕获”的项目时,请确保将活动分组到“尝试”容器中的序列。 否则,全局异常处理程序将不会执行。
如果存在嵌套的活动,“全局异常处理程序”仅对调用堆栈中的各个活动执行。不过,它不会对直接封装在“Try Catch 异常处理”中的活动执行,除非它们包含在某一活动中。
全局异常处理程序用法示例
下面的示例显示在执行过程中抛出异常时项目的行为。
自动化项目设置为在空白的已保存记事本文档中单击,键入一些文本,然后关闭应用程序,但在单击“保存”按钮保存文档之前不会关闭应用程序。
为控制出现错误时工作流的行为,“全局异常处理程序”将重试该活动三次,然后中止并显示错误消息。
创建工作流
-
Create a Blank Process by following the steps in the Creating a Basic Process page.
-
打开记事本并将文档保存在计算机上。
-
From the Activities panel, drag a Type Into activity to the Designer panel. The activity is automatically added to a Sequence.
-
在“键入”活动中,单击“指明在屏幕上”。Studio 将最小化,并并允许您在记事本窗口内单击以创建选取器。在文本字段中,键入所需文本并用引号括起。
-
From the Activities panel, add a Send Hotkey activity to the workflow. Indicate the Notepad window, and select Ctrl from the activity, type in s in the Key field. This saves the Notepad document after the text was typed in.
-
From the Activities panel, add a Close Application activity to the workflow. Indicate the Notepad window using Indicate on screen. The resulted workflow should look like this:
添加全局异常处理程序
-
在“功能区”的“设计”选项卡部分中,选择“新建”>“全局处理程序”。“新建全局处理程序”窗口将打开。键入处理程序的“名称”,并将它保存到项目路径中。单击“创建”,一个“全局异常处理程序”就会添加到自动化项目中。
-
在“变量”选项卡中,创建名为
retryCount的Int32变量,将其范围设为整个“全局异常处理程序”,并将“默认”值字段留空。该变量存储重试次数,每次遇到错误时将重试次数增加1。 -
创建一个名为
failedActivity的字符串变量,并将其作用域设置为整个工作流。该变量存储故障活动的名称,并在“输出”面板中显示该变量。 -
From the Activities panel, add an Assign activity below the Log Error in the Global Handler sequence. Add the
retryCountto the activity and assign it theerrorInfo.RetryCountexpression, which counts the number of times the exception is thrown. -
添加另一个“赋值”活动,其中将
errorInfo.ActivityInfo.Name表达式赋值给failedActivity变量。此时,工作流应该如下所示: -
Add an If activity to the workflow. Set the Condition to
retryCount < 3to limit the number of retries to 3. -
在“Then”类别的“赋值”活动部分中,将
ErrorAction.Retry赋值给result变,从而让“全局异常处理程序”重试抛出了异常的活动。 -
在“Else”类别中,将
ErrorAction.Abort赋值给result以便在满足条件时让“全局异常处理程序”中止执行。“If”活动应该如下所示:
当全局异常处理程序遇到异常时,它会记录发生故障的活动的名称,然后开始重试该活动三次。如果每次都遇到相同的异常,并且重试次数达到 3 次,并且抛出异常的活动级别上中止执行。
如果某一次重试期间没有遇到异常,那么工作流的执行将继续进行,全局异常处理程序也不会进入。