RPAに限らず、システム開発においてエラーハンドリングはとても重要です。
UiPathにはこのエラーハンドリングにうってつけのアクティビティが存在します。それが「TryCatch」アクティビティです。
UiPathでのロボット作成において使わない場面はないといっても過言でないアクティビティです。「うん。うん。」とうなずきながら読んでる方もいるのではないでしょうか。
本記事では、TryCatchアクティビティの基本的な使い方を使用例を用いて説明していきます。
TryCatchとは?
UiPathのアクティビティの一つでエラー発生時の処理に用います。
TryCatchの仕様①~Try、Catch、Finally~
TryCatchアクティビティは「Try」、「Catch」、「Finally」の3つのパートで構成されています。
Try内でエラーが発生した場合、Catch内の処理が実行され、最後にFinally内の処理が実行されます。
Try
基本処理をTry内に作成します。アクティビティにフォーカスした状態で「Ctrl+T」により選択していたアクティビティがTryに含まれた状態でTryCatchを生成することもできます。
Catch
エラー発生時の処理をCatch内に作成します。
Exception選択リストから、キャッチするエラーの種類を選択します。
選択したエラー以外が発生した場合は、Catch内には入らず従来通りのエラーとなります。「If」アクティビティのような感じですね。
特別な理由がない限り、すべてのエラーをキャッチする「System.Exception」でよいでしょう。
Catch部は異なるエラー条件で複数設定することが可能です。エラーの内容ごとに異なる処理をさせたい場合に用いるでしょう。
Finally(任意)
エンド処理をFinally内に作成しますが、設定しなくてもかまいません。
TryCatchの仕様②~処理が中断しない~
処理中ににエラーが発生した場合、エラーがポップアップで表示されロボは停止します。
しかし、TryCatchを用いるとエラーが発生しても中断しないようなロボが作成可能です。
これは、エラー発生時にCatch内で正常な処理としてエラーを受け取るためです。
多数のデータをループ処理する際に、途中でエラーが発生しロボが中断するのはとても辛いですよね。
ループ内の処理を丸々Tryに入れることで、いくつかのデータでエラーが起きたとしても最後までループ処理を実行してくれます。
TryCatchの使用例
TryCatchの簡単な使用例を紹介します。
作成したシナリオは、インプットダイアログで数字の入力を求め、その後、入力された数字の3倍の数値を出力するというものです。
TryCatchなしで実行した場合
これが実際のシナリオになります。
実行してみます。
指示通り数字を入力した場合、3倍の値を出力しています。
今度はエラーを発生させてみます。
エラーが発生し、処理が中断されました。
(入力されたString型変数からInteger.ParseによってInt型に型変換しているため、数字ではない文字列が入力された場合にエラーになります。)
TryCatchありで実行した場合
これがTryCatchの中に入れた状態です。
Catch内では、発生したエラーの通知処理を行っています。
発生したエラー内容はexception(エラー内容が格納された変数).Messageで取得できます。
実行し、エラーを発生させます。すると、
このように、Catch内の処理が実行され、全体として正常に処理が終了します。
TryCatchのまとめ
いかがだったでしょうか。
基本的なことしか説明できませんでしたが、「TryCatch」アクティビティの利便性について少しは理解いただけたのではないでしょうか。
TryCatchを使う利点はなんといっても「エラー毎に別の処理を行える」「エラーが起きても処理は中断されない」の2点です。ぜひこの記事を参考に使ってみてください!