RPA

UiPathのTry Catchで例外処理【基本編】

こんにちは、Takaです。

今回は UiPath の Try Catch を使った例外処理について基本的な操作を学習します。

なぜ Try Catch を使うのか

UiPath で例えば以下のようなシーケンスを作成します。事前処理と後続処理の間に、エラーが起きそうな代入処理があります。

error-process

このシーケンスを実行したら、以下のようなエラーのダイアログが表示されます。

error-message

通常、このようなエラー検知からのダイアログ表示は Try Catch で例外を検知して、Throw でユーザーに知らせるという作法が必要なのですが、UiPath は問題のある Try Catch なしでも知らせてくれます。

そのためこの投稿を作成している時、僕は混乱しました。

Taka
Taka
UiPath はエラー検知してダイアログを表示してくれるなら Try Catch いらない気がするが…なぜ必要なのだろう?

Try Catch が何をするかは理解できたけど、”なぜ UiPath で必要なのか?” が
自分の中で腑に落ちないので悶々としてしまい、どうも記事が進まない..

そこで先輩エンジニアの方に相談してみました。すると..

先輩
先輩
Try Catch があると誰が見ても  “ここはエラーになるかもしれない” と理解できるからあったほうがいいよ。
Taka
Taka
なるほど!(…わかりやすい)

プログラミングや新しいスキルを習得する際、気軽に経験者に聞ける環境ってものすごく大切だと思います。独学には限界があるし、あまり効率的ではない。

そして “学習を継続できるかどうか” というポイントにもなります。僕も何度も経験してますが、一度ドツボにはまるとなかなか抜け出せない。そして腑に落ちないことが多くなると嫌になって辞めてしまうし、学習することが苦痛になってしまう。

そういったドツボにはまった時ほど、経験者の一言は貴重ですね。本当にありがたい。

さてさて、スッキリしたので Try Catch を UiPath で利用する手順をさくっとまとめていきます。

Try Catch

UiPath のプロセスでエラーが発生しそうな処理を行う場合、その処理がエラーが出ても正しく処理をするために Try Catch を利用します。

トライキャッチ」というアクティビティを追加します。「Try」で処理を行い、もしエラーが発生したら「Catches」でキャッチをして例外処理を行うという仕組みです。

「Try」の中に先ほどのエラー処理を追加します。

add-try-catch

例外処理を行う際は、「Exception」で処理を選択します。.Net の例外処理を選択するようになっています。ここでは “System.Exception” を選択しました。

set-exception

Exception の右側の “exception” は例外処理の名前です。後述の Terminate や Throw の処理でこの名前を使います。

exception-name

ここから「Try」で処理して「Catches」で検知した例外をどのように処理するか検討します。エラー内容をユーザーに知らせるのであれば Throw 処理、有無を言わさずプロセスを終了するなら Terminate 処理を設定します。

Throw 処理

「Catches」で検知した例外をユーザー側に周知するために Throw 処理を使います。Throw でどのような例外が発生したかをダイアログで知らせます。

add-throw-activities

プロパティで「例外」に「Catches」の “exception” を入力して、「表示名」に適切な名前を入力します。

set-property

この状態で実行してみます。すると、事前処理実行後に Throw で処理された以下のようなダイアログが表示されます。

throw-dialog

Terminate 処理

「Try」でのエラーが処理が全体に影響するので、プロセスを終了させる必要があれば「ワークフローを終了」という Terminate 処理でプロセスを終わらせることができます。

「Catch」に追加します。プロパティで「例外」とある箇所には、先ほどの Exception の名前を入れます。

set-terminate

ここで例えば「Try」の処理がエラーとなった場合、実行すると「ワークフローを終了」が処理を終了させて、以下のようなダイアログを表示します。

run-terminate-dialog

このように有無を言わさずエラー発生時にプロセスを終了させたい場合は「ワークフローを終了」を使います。

もうちょっと高度な内容を

基本中の基本の内容だけまとめましたが、例外処理については UiPath の公式ページ Try Catch を見ると、サンプルのプロセスでもう少し高度な Try Catch の処理をやっているようです。後でやってみよう。何かあれば追記します。

それでは、今回はここまで!