【RPA之家UiPath官方教程】错误和异常处理
错误和异常处理
在本课程中,您将学习如何使自动化产品投入生产的最重要方面之一:如何预测,检测和解决工作流程中的错误。
受众:RPA开发人员
学习目标
在本课程结束时,您应该能够:
描述主要的错误处理技术,并说明何时应使用它们;
在自动化项目中使用“尝试捕获”,“重试作用域”和“全局异常处理程序”方法。
关于本课程
介绍
在本课程中,您将学习如何使自动化产品投入生产的最重要方面之一:如何预测,检测和解决工作流程中的错误。
我们将首先介绍UiPath中遇到的“常见异常”,然后介绍特定的异常处理活动(“尝试捕获”,“重试作用域”和“全局异常处理程序”)以及许多活动共享并且非常有价值的属性-继续发生错误。
但是首先,让我们快速区分错误和异常:
--错误:
错误是特定程序通常无法处理的事件。 根据导致错误的原因,有不同类型的错误-例如:
语法错误,编译器/解释器无法将编写的代码解析为有意义的计算机指令;
用户错误,即软件出于某种原因确定用户的输入不可接受;
编程错误,程序不包含语法错误,但不会产生预期的结果。 这通常称为错误。
--异常:
异常是程序识别(捕获),分类和处理的事件。 更具体地说,存在由开发人员配置的例程,该例程在捕获异常时被激活。 有时,处理机制可能只是停止执行。
一些例外与使用的系统相关,而另一些例外与业务流程的逻辑相关。
受众:RPA开发人员
课程时间:2小时
完成课程的要求:通过最低80%的分数通过课程测验
先决条件:
基本编程知识
RPA开发人员角色课程简介
变量,数据类型和控制流程
数据处理课程
Excel和数据表课程
UI互动课程
选择器课程
项目组织课程
学习目标
在本课程结束时,您将能够:
1描述主要的错误处理技术,并说明何时应使用它们。
2在自动化项目中使用“尝试捕获”,“重试作用域”和“全局异常处理程序”方法。
注意:本课程是使用UiPath Studio 2019.7创建的。 最新的Community Edition版本中的某些元素可能有所不同。
常见异常
在下面,您可以找到在使用UiPath开发的项目中可能遇到的最常见的异常。作为一般说明,所有异常都是从System.Exception派生的类型,因此,例如,在“尝试捕获”中使用此通用类型将捕获所有类型的错误。
NullReferenceException-使用没有设置值的变量(未初始化)时,通常会发生此错误。
IndexOutOfRangeException-当对象的索引超出集合的限制时发生。
ArgumentException-调用方法时,至少有一个传递的参数不符合被调用方法的参数规范时,抛出此异常。
SelectorNotFoundException-当机器人在超时时间内无法在目标应用程序中为活动找到指定的选择器时,引发此异常。
ImageOperationException-在超时时间内未找到图像时发生。
TextNotFoundException-在超时时间内未找到指示的文本时发生。
ApplicationException-描述了根源于技术问题的错误,例如没有响应的应用程序。
业务规则例外与上面列出的所有系统例外是分开的。 这些描述的错误根源在于以下事实:自动化项目所依赖的某些数据不完整,丢失,超出了设定范围(例如,试图从ATM提取的数据超出每日限制)或未通过其他数据验证标准(例如, 包含字母的发票金额)。
在Try Catch活动中使用通用的System.Exception不会引发业务规则异常。 处理该异常的机制必须由开发人员单独定义(基于流程所有者设置的规则),或者可以简化为停止流程的执行,例如,通过使用简单的Throw活动。
Try Catch
此活动在序列或活动中捕获指定的异常类型,并显示错误通知或将其消除,然后继续执行。
作为一种机制,Try Catch在Try块中运行活动,如果发生错误,则在Catch块中执行活动。 只有在未引发任何异常或在Catch块中捕获并处理了异常(不重新抛出)时,才执行Final块。
Try
所执行的活动有可能引发错误。
Catch
发生错误时要执行的活动或一组活动。 请注意,可以在此块中添加多个错误和相应的活动。
Finally
在“尝试捕获”块之后要执行的活动或一组活动。 仅当不引发异常或发生错误并在“捕获”部分中捕获错误时,才执行此部分。
重试范围
只要不满足条件或引发错误,重试范围活动就会重试包含的活动。
“重试范围”活动用于捕获和处理错误,这就是为什么它类似于“尝试捕获”的原因。 不同之处在于,此活动仅重试执行,而不提供更复杂的处理机制。
它可以在没有终止条件的情况下使用,在这种情况下,它将重试活动,直到没有异常发生(或超过提供的尝试次数)为止。
其他特性
NumberOfRetries-要重试序列的次数。
RetryInterval-指定两次重试之间的时间(以秒为单位)。
ContinueOnError属性
继续发生错误是一个属性,用于指定即使活动引发错误,执行是否也应继续执行。
请记住,如果在具有范围的活动(例如“附加窗口”或“附加浏览器”)上将ContinueOnError设置为True,则在该范围内的其他活动中发生的所有错误也将被忽略。
并非在所有情况下都建议将此属性设置为true,但是在某些情况下它是有意义的,例如:
使用数据抓取时-这样活动就不会在最后一页上引发错误(当不再找到“下一步”按钮的选择器时);
当我们对捕获错误不感兴趣,而只是对活动的执行感兴趣时。
该字段仅支持布尔值(True,False)。 默认值为False,因此,如果该字段为空并引发错误,则项目的执行将停止。 如果将该值设置为True,则无论有任何错误,项目都会继续执行。
全局异常处理
全局异常处理程序是一种工作流,旨在确定在项目级别遇到执行错误时的行为。 这就是每个自动化项目只能设置一个全局异常处理程序的原因。
只有未捕获的异常会到达异常处理程序。 如果在Try Catch活动内发生异常,并且在Catch块内成功捕获并处理了该异常(并且未重新抛出该异常),则该异常将不会到达全局异常处理程序。
可以通过以这种类型启动新项目,或者通过在“项目”面板中将现有项目设置为“全局异常处理程序”来创建全局异常处理程序。
如何工作的?
全局异常处理程序具有2个预定义的参数,不应将其删除:
errorInfo,带有In方向-包含引发的错误和失败的工作流程;
结果,输出方向为Out-遇到错误时,将存储该过程的下一个行为。
全局异常处理程序包含以下预定义的2个操作(可以将其删除)。 可以添加其他操作。
记录错误
此部分仅记录错误。 开发人员可以选择日志记录级别:致命,错误,警告,信息等。
选择下一个行为
在这里,开发人员可以选择执行期间遇到错误时要采取的措施:
继续-重新抛出异常;
忽略-忽略异常,并从下一个活动继续执行;否则,将继续执行。
重试-重试引发异常的活动;
中止-运行当前处理程序后,执行停止。