【UiPath】Try CatchとRetry Scopeを組み合わせたエラー対策

皆さんこんにちは。開発エンジニアのKです。
朝晩は徐々に過ごしやすい気温になって来ておりますが、日中はまだまだ暑い日が続いております。
皆さんいかがお過ごしでしょうか。

本題ですが、UiPathでのエラーが発生した時の対策の一つをご紹介させて頂きます。

Try CatchとRetry Scopeについて

Try CatchアクティビティはTry内に置かれたアクティビティでエラーが発生した場合、
Catchに移り、Catch内のアクティビティを実行します。

Retry Scopeアクティビティはスコープ内に置かれたアクティビティでエラーが発生した場合、
スコープの頭から再実行し直します。

組み合わせたエラー対策

①ReTry Scopeを配置
②ReTry Scope内にTry Catchを配置
  ※Try内は正常系の処理を配置します。

ここで注意すべき点は、Try内でエラーが検知されるとCatchに移りますが、エラーが発生したというフラグは
Catchを抜ける際にはフラグが無くなってしまう為、ReTry Scopeではエラーが発生した事を検知出来ず、再実行されずに後続処理が実行されてしまいます。

ではどの様にRetry Scopeまでエラー発生フラグ渡すかというと、
Catch内に再スローアクティビティを配置します。

再スローアクティビティはCatch内でのみ配置できる専用アクティビティで、Catchに移ったエラーを再度発生させる事ができます。
※ここではCatchの対象をException(全てのエラーが対象)に設定しています。

これらを組み合わせる事で

①Try内でエラー発生
②Catchに移行
③エラー時の処理を行った後、再スロー
④Retry Scopeがエラーを検知し、再実行

という流れのフローを作ることが出来ます。

今回ご紹介したエラー対策を組み込んだ例として、システムに情報を登録し、登録完了ページを確認するRPAだった場合、
①Try:システムに情報を入力し、登録ボタンを押下して登録完了ページを確認する処理
②Catch:エラー画面から入力ページに戻る処理と、再スローを設定
③Retry Scope:再スローを検知し、再度情報を入力する所から再実行

といったRPAを作成する事が可能となります。
また、このエラー対策を処理全体だけでなく、細かい処理毎に設定し安定性を高めるのもいいと思います。

いかがだったでしょうか?
皆さんのより良いRPA開発の手助けになれば幸いです。

最後までご覧いただきありがとうございました。