UiPath异常处理机制

2. 异常处理

2.1 概述

在流程开发中,进行异常处理是非常关键的一部分。一个流程的异常处理框架的好坏直接影响到整个项目的代码质量以及后期维护成本和难度。

2.2 常用异常处理控件

2.2.1 常用异常处理控件

2.2.1.1 Rethrow

只能在Try/Catch块的Catch块中使用,显式的抛出之前在异常处理块中捕获的异常,并且可以保持异常的原始源

2.2.1.2 Terminate Workflow

终止正在运行的工作流实例,并报告错误信息。使用此控件中止流程,一旦流程终止,它就不能被恢复。

2.2.1.3 Throw

抛出异常信息

2.2.1.4 Try Catch

在Sequence或FlowChart中捕获指定的异常类型,并做相应的处理动作。

在此控件中包含三个分块:

Try:用来包围可能会出现异常的逻辑代码,它单独无法使用,必须配合catch/finally使用;

Catch:在此控件中,可以指定多种可能存在的异常类型,在有多个catch块的时候,是按照catch块的先后顺序进行匹配的,一旦异常类型被一个catch块匹配,则不会与后面的catch块进行匹配。

Finally: 同其他语言的异常处理块一样,在Finally里,不管是否发生错误,此块的内容是一定被执行的,可以在此块中时下关闭文件流、数据库连接等操作

2.2.1.5 Retry Scope

只要不满足条件或抛出错误,就重试所包含的活动。仅适用于查找元素,不利于逻辑重试

Retry Scope控件必须放在Try/Catch控件的Try块中,这样是为了保证在Retry Scope中重试N次之后,都可能存在异常而做的保护处理。如果Retry Scope中重试N次无果,则在Catch中抛出异常信息。

2.3 流程中异常分类

2.3.1 业务处理异常

在关键用户和业务分析人员在流程评估时,需要将流程中的异常分为两种:已知和未知异常两种。

- 已知异常

即在之前有遇到过此种异常信息,并且有明确的处理方式。如果机器人在执行过程中遇到此类的异常,则需要设置相应的处理机制,并且保证机器人执行不中断。

- 未知异常

即在这之前从未遇到过的异常。这种异常可能是由多种因素引起,并且无法准确的预知,如果发生这种情况,则需要发送邮件获取通过其他方式通知到相应的用户。

2.3.2 系统错误或应用程序异常

系统错误和应用程序引起的异常在自动化流程中还是比较常见,通常会通过多次重试的机制以保证流程的正常。举个例子:

 登录系统:在登录某个使用用户名、密码进入的系统时,有可能会由于某些不可描述的原因导致一次登录失败。在尝试失败之后,机器人需要关闭该系统,重新打开,再次输入凭证,再去判断登录成功标志。

2.4 异常处理和设计

2.4.1 在有必要使用异常的地方使用,不要在流程的任何地方都用

谨慎地使用异常,异常捕获的代价非常高昂,异常使用过多会严重影响程序的性能。如果在程序中能够用if语句和Boolean变量来进行逻辑判断,那么尽量减少异常的使用,从而避免不必要的异常捕获和处理。

2.4.2 不要使用空的Catch块

在捕获了异常之后什么都不做,相当于忽略了这个异常。千万不要使用空的catch块,空的catch块意味着你在程序中隐藏了错误和异常,并且很可能导致程序出现不可控的执行结果。如果你非常肯定捕获到的异常不会以任何方式对程序造成影响,最好用Log日志将该异常进行记录,以便日后方便更新和维护。

2.4.3 注意catch块的顺序

按照C#中异常继承的关系,不要把最上层的异常放在最前面的Catch块中,尽可能的缩小异常类型的范围。

2.4.4 不要将给用户的提示信息和代码混在一起

为了把给用户的提示信息和代码分开,可以将用户提示信息放在配置文件中统一管理。

同时也不要把流程中代码报错信息直接抛出给用户,会大大降低用户的体验效果。

2.4.5 尽量将异常抛给上层处理

如果在每个出现异常的地方都直接进行处理,会导致程序异常处理流程混乱,不利于后期维护和异常错误排查。由上层统一进行处理会使得整个程序的流程清晰易懂。

2.4.6 在Finally中释放资源

如果有使用文件读取、网络操作以及数据库操作等,记得在finally中释放资源。这样不仅会使得程序占用更少的资源,也会避免不必要的由于资源未释放而发生的异常情况。

3. 测试场景模板

3.1 概述

主要用于测试RPA流程功能实现、业务逻辑、异常处理机制是否完善

RPA实施人员代码开发完毕后根据用户提供的测试用例去模拟用户在使用软件时的各种场景:

主要模拟两种情景:

      1、模拟用户正确的业务操作过程—验证的是功能是否正确

      2、模拟用户错误的业务操作过程—验证的是程序的异常处理能力(健壮性)

根据以下测试场景模板,测试流程各项功能。若用户提供测试模板,以用户为准

测试编号 流程名称 场景描述 必要测试数据 预期结果 重要性 状态 测试执行者 测试日期 错误信息 错误出现原因 错误解决方案

TS01 Main.xaml 机器人获取发票信息 滴滴电子发票.pdf 取到开票日期及金额 中 未通过 张三 2020/1/11 Read PDF File: One or more errors occurred. 未判断PDF文件是否存在 使用Path Exists判断文件是否存在,结果为True则执行读取PDF文件操作

4. 用户交流

同用户沟通时,业务需求变更或需代码进行调整等讨论沟通后都要进行文档化,邮件等方式发予同用户进行确认,避免后期用户及自身遗忘。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容