一个很好用的异常处理控件 Retry Scope(一)

【背景】

在实际运行RPA流程时,总会遇到各种各样的异常。例如,获取不到界面的信息;点击按钮后没有响应,界面卡死等问题。原因也很多,可能是网络延迟,也可能是界面或者应用系统响应失败等等。

虽然通过Try Catch可以捕获到异常,或者通过UiPath提供的企业级框架进行事务级别的重试。但有时局部的重试也很重要。所以就可以用到 Retry Scope这个控件。

【介绍】

这个控件的官方说明在下面的链接,具体信息可以自取。

Retry Scope

引入这个Activity后,如下图所示:

这个Activity有两部分,ActionCondition

运行机制是,先执行Action中的程序。运行完成后,会检查Condition中的控件是否返回True的结果。如果返回True,则执行结束。如果返回False, 则重复执行Action中的程序。

默认重复执行3次,每次相隔5秒。

Retry Scope有两个重要参数

  • NumberOfRetries - The number of times that the sequence is to be retried.
  • RetryInterval - Specifies the amount of time (in seconds) between each retry.

NumberOfRetries 是重复次数,默认是3次。

RetryInterval是重试的相隔时间,默认是5秒。

使用方式如下:

这里有一点需要注意,如果Retry Scope重试次数结束后,Condition还是False,那这个控件会抛出异常。

所以,在使用时,需要配合Try Catch 或者将 ContinueOnError的属性改为 True, 如下图。

Try Catch的使用形式:

Continue OnError的使用形式:

【使用场景】

具体的使用方式,可以参考官方网站的描述。

这里介绍一个使用场景。

当我们尝试打开一个界面的时候,如果过程可能存在异常,可以把相关的操作写入Retry Scope的Action中,然后通过”Element Exists”控件来判断相关的页面是否已经打开成功,如果失败,则可以进行重试。

后面会再介绍一篇关于Retry Scope的其他使用场景。

也欢迎大家一起讨论平时遇到的一些问题。

当然可以!下面是一个简单的Spring Retry的示例代码: 首先,您需要在您的项目中添加Spring Retry的依赖。如果您使用Maven,可以在pom.xml文件中添加以下依赖项: ```xml <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> <version>1.3.1</version> </dependency> ``` 接下来,您可以创建一个包含重试逻辑的方法: ```java import org.springframework.retry.annotation.Backoff; import org.springframework.retry.annotation.Retryable; import org.springframework.stereotype.Component; @Component public class MyService { @Retryable(maxAttempts = 3, backoff = @Backoff(delay = 1000)) public void performOperation() throws Exception { // 模拟一个可能会失败的操作 if (Math.random() < 0.5) { throw new Exception("操作失败"); } else { System.out.println("操作成功"); } } } ``` 在上述示例中,我们使用了`@Retryable`注解来标记`performOperation`方法,表示该方法可以进行重试。`maxAttempts`属性指定最大重试次数,`backoff`属性指定重试间隔(这里设置为1秒)。 最后,您可以在其他类中调用`MyService`的方法进行重试: ```java import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class MyApp { @Autowired private MyService myService; public static void main(String[] args) { SpringApplication.run(MyApp.class, args); } public void run() throws Exception { myService.performOperation(); } } ``` 在上述示例中,我们通过`@Autowired`注解将`MyService`注入到`MyApp`类中,并在`run`方法中调用`performOperation`方法进行重试。 这只是一个简单的示例,您可以根据自己的需求和业务逻辑进行更复杂的重试配置和操作。希望对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值