【RPA之家UiPath官方教程】錯(cuò)誤和異常處理
錯(cuò)誤和異常處理
在本課程中,您將學(xué)習(xí)如何使自動化產(chǎn)品投入生產(chǎn)的最重要方面之一:如何預(yù)測,檢測和解決工作流程中的錯(cuò)誤。
受眾:RPA開發(fā)人員
學(xué)習(xí)目標(biāo)
在本課程結(jié)束時(shí),您應(yīng)該能夠:
描述主要的錯(cuò)誤處理技術(shù),并說明何時(shí)應(yīng)使用它們;
在自動化項(xiàng)目中使用“嘗試捕獲”,“重試作用域”和“全局異常處理程序”方法。
?
關(guān)于本課程
介紹
在本課程中,您將學(xué)習(xí)如何使自動化產(chǎn)品投入生產(chǎn)的最重要方面之一:如何預(yù)測,檢測和解決工作流程中的錯(cuò)誤。
我們將首先介紹UiPath中遇到的“常見異?!保缓蠼榻B特定的異常處理活動(“嘗試捕獲”,“重試作用域”和“全局異常處理程序”)以及許多活動共享并且非常有價(jià)值的屬性-繼續(xù)發(fā)生錯(cuò)誤。
但是首先,讓我們快速區(qū)分錯(cuò)誤和異常:
--錯(cuò)誤:
錯(cuò)誤是特定程序通常無法處理的事件。?根據(jù)導(dǎo)致錯(cuò)誤的原因,有不同類型的錯(cuò)誤-例如:
?
語法錯(cuò)誤,編譯器/解釋器無法將編寫的代碼解析為有意義的計(jì)算機(jī)指令;
用戶錯(cuò)誤,即軟件出于某種原因確定用戶的輸入不可接受;
編程錯(cuò)誤,程序不包含語法錯(cuò)誤,但不會產(chǎn)生預(yù)期的結(jié)果。?這通常稱為錯(cuò)誤。
--異常:
異常是程序識別(捕獲),分類和處理的事件。?更具體地說,存在由開發(fā)人員配置的例程,該例程在捕獲異常時(shí)被激活。 有時(shí),處理機(jī)制可能只是停止執(zhí)行。
一些例外與使用的系統(tǒng)相關(guān),而另一些例外與業(yè)務(wù)流程的邏輯相關(guān)。
?
受眾:RPA開發(fā)人員
課程時(shí)間:2小時(shí)
完成課程的要求:通過最低80%的分?jǐn)?shù)通過課程測驗(yàn)
先決條件:
基本編程知識
RPA開發(fā)人員角色課程簡介
變量,數(shù)據(jù)類型和控制流程
數(shù)據(jù)處理課程
Excel和數(shù)據(jù)表課程
UI互動課程
選擇器課程
項(xiàng)目組織課程
?
學(xué)習(xí)目標(biāo)
在本課程結(jié)束時(shí),您將能夠:
1描述主要的錯(cuò)誤處理技術(shù),并說明何時(shí)應(yīng)使用它們。
2在自動化項(xiàng)目中使用“嘗試捕獲”,“重試作用域”和“全局異常處理程序”方法。
?
注意:本課程是使用UiPath Studio 2019.7創(chuàng)建的。 最新的Community Edition版本中的某些元素可能有所不同。
?
常見異常
在下面,您可以找到在使用UiPath開發(fā)的項(xiàng)目中可能遇到的最常見的異常。作為一般說明,所有異常都是從System.Exception派生的類型,因此,例如,在“嘗試捕獲”中使用此通用類型將捕獲所有類型的錯(cuò)誤。
NullReferenceException-使用沒有設(shè)置值的變量(未初始化)時(shí),通常會發(fā)生此錯(cuò)誤。
IndexOutOfRangeException-當(dāng)對象的索引超出集合的限制時(shí)發(fā)生。
ArgumentException-調(diào)用方法時(shí),至少有一個(gè)傳遞的參數(shù)不符合被調(diào)用方法的參數(shù)規(guī)范時(shí),拋出此異常。
SelectorNotFoundException-當(dāng)機(jī)器人在超時(shí)時(shí)間內(nèi)無法在目標(biāo)應(yīng)用程序中為活動找到指定的選擇器時(shí),引發(fā)此異常。
ImageOperationException-在超時(shí)時(shí)間內(nèi)未找到圖像時(shí)發(fā)生。
TextNotFoundException-在超時(shí)時(shí)間內(nèi)未找到指示的文本時(shí)發(fā)生。
ApplicationException-描述了根源于技術(shù)問題的錯(cuò)誤,例如沒有響應(yīng)的應(yīng)用程序。
?
業(yè)務(wù)規(guī)則例外與上面列出的所有系統(tǒng)例外是分開的。?這些描述的錯(cuò)誤根源在于以下事實(shí):自動化項(xiàng)目所依賴的某些數(shù)據(jù)不完整,丟失,超出了設(shè)定范圍(例如,試圖從ATM提取的數(shù)據(jù)超出每日限制)或未通過其他數(shù)據(jù)驗(yàn)證標(biāo)準(zhǔn)(例如, 包含字母的發(fā)票金額)。
?
在Try Catch活動中使用通用的System.Exception不會引發(fā)業(yè)務(wù)規(guī)則異常。 處理該異常的機(jī)制必須由開發(fā)人員單獨(dú)定義(基于流程所有者設(shè)置的規(guī)則),或者可以簡化為停止流程的執(zhí)行,例如,通過使用簡單的Throw活動。
?
Try?Catch
此活動在序列或活動中捕獲指定的異常類型,并顯示錯(cuò)誤通知或?qū)⑵湎?,然后繼續(xù)執(zhí)行。
?
作為一種機(jī)制,Try Catch在Try塊中運(yùn)行活動,如果發(fā)生錯(cuò)誤,則在Catch塊中執(zhí)行活動。 只有在未引發(fā)任何異常或在Catch塊中捕獲并處理了異常(不重新拋出)時(shí),才執(zhí)行Final塊。
Try
所執(zhí)行的活動有可能引發(fā)錯(cuò)誤。
Catch
發(fā)生錯(cuò)誤時(shí)要執(zhí)行的活動或一組活動。?請注意,可以在此塊中添加多個(gè)錯(cuò)誤和相應(yīng)的活動。
Finally
在“嘗試捕獲”塊之后要執(zhí)行的活動或一組活動。?僅當(dāng)不引發(fā)異?;虬l(fā)生錯(cuò)誤并在“捕獲”部分中捕獲錯(cuò)誤時(shí),才執(zhí)行此部分。
重試范圍
只要不滿足條件或引發(fā)錯(cuò)誤,重試范圍活動就會重試包含的活動。
“重試范圍”活動用于捕獲和處理錯(cuò)誤,這就是為什么它類似于“嘗試捕獲”的原因。?不同之處在于,此活動僅重試執(zhí)行,而不提供更復(fù)雜的處理機(jī)制。
?
它可以在沒有終止條件的情況下使用,在這種情況下,它將重試活動,直到?jīng)]有異常發(fā)生(或超過提供的嘗試次數(shù))為止。
?
其他特性
NumberOfRetries-要重試序列的次數(shù)。
RetryInterval-指定兩次重試之間的時(shí)間(以秒為單位)。
?
?
ContinueOnError屬性
繼續(xù)發(fā)生錯(cuò)誤是一個(gè)屬性,用于指定即使活動引發(fā)錯(cuò)誤,執(zhí)行是否也應(yīng)繼續(xù)執(zhí)行。
?
請記住,如果在具有范圍的活動(例如“附加窗口”或“附加瀏覽器”)上將ContinueOnError設(shè)置為True,則在該范圍內(nèi)的其他活動中發(fā)生的所有錯(cuò)誤也將被忽略。
?
并非在所有情況下都建議將此屬性設(shè)置為true,但是在某些情況下它是有意義的,例如:
使用數(shù)據(jù)抓取時(shí)-這樣活動就不會在最后一頁上引發(fā)錯(cuò)誤(當(dāng)不再找到“下一步”按鈕的選擇器時(shí));
當(dāng)我們對捕獲錯(cuò)誤不感興趣,而只是對活動的執(zhí)行感興趣時(shí)。
?
該字段僅支持布爾值(True,F(xiàn)alse)。 默認(rèn)值為False,因此,如果該字段為空并引發(fā)錯(cuò)誤,則項(xiàng)目的執(zhí)行將停止。 如果將該值設(shè)置為True,則無論有任何錯(cuò)誤,項(xiàng)目都會繼續(xù)執(zhí)行。
?
?
全局異常處理
全局異常處理程序是一種工作流,旨在確定在項(xiàng)目級別遇到執(zhí)行錯(cuò)誤時(shí)的行為。?這就是每個(gè)自動化項(xiàng)目只能設(shè)置一個(gè)全局異常處理程序的原因。
?
只有未捕獲的異常會到達(dá)異常處理程序。?如果在Try Catch活動內(nèi)發(fā)生異常,并且在Catch塊內(nèi)成功捕獲并處理了該異常(并且未重新拋出該異常),則該異常將不會到達(dá)全局異常處理程序。
?
可以通過以這種類型啟動新項(xiàng)目,或者通過在“項(xiàng)目”面板中將現(xiàn)有項(xiàng)目設(shè)置為“全局異常處理程序”來創(chuàng)建全局異常處理程序。
?
如何工作的?
全局異常處理程序具有2個(gè)預(yù)定義的參數(shù),不應(yīng)將其刪除:
errorInfo,帶有In方向-包含引發(fā)的錯(cuò)誤和失敗的工作流程;
結(jié)果,輸出方向?yàn)镺ut-遇到錯(cuò)誤時(shí),將存儲該過程的下一個(gè)行為。
?
全局異常處理程序包含以下預(yù)定義的2個(gè)操作(可以將其刪除)。 可以添加其他操作。
?
記錄錯(cuò)誤
此部分僅記錄錯(cuò)誤。?開發(fā)人員可以選擇日志記錄級別:致命,錯(cuò)誤,警告,信息等。
?
選擇下一個(gè)行為
在這里,開發(fā)人員可以選擇執(zhí)行期間遇到錯(cuò)誤時(shí)要采取的措施:
繼續(xù)-重新拋出異常;
忽略-忽略異常,并從下一個(gè)活動繼續(xù)執(zhí)行;否則,將繼續(xù)執(zhí)行。
重試-重試引發(fā)異常的活動;
中止-運(yùn)行當(dāng)前處理程序后,執(zhí)行停止。