13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UiPathでRPAを実践してみる(9) ~例外処理を記述する~

Posted at

UiPathはロジックを非常に簡単に記述できる半面、何かエラーがあった時の例外処理を、疎かにしがちかもしれません。
例えば下記の処理では、既に起動しているメモ帳に、「これはテストです。」という文章を書き込んでいます。
キャプチャ.PNG

もちろん、上記の前提通りメモ帳が既に起動していれば良いのですが起動していない場合は下記のエラーが発生してプログラムが停止します。
キャプチャ2.PNG

Attachのデフォルトのタイムアウト時間は30秒ですから、ユーザーが手動で起動した場合には30秒待たされた挙句に、エラーが出るという悲しい事態になります…

これを避けるために例外処理を記述していきましょう。プログラムに親しんでいる方にはなじみがあると思いますが、try~catchを使っていきます。

Attach処理で右クリックをすると、Sorround with Try Cathがあると思います。これを選択しましょう。
キャプチャ4.PNG

下記の様に作成した処理がTryCatchで囲われます。
キャプチャ5.PNG

この時点では:exclamation:が出ていて処理が実行できません。catchに適切な記述をするように求められています。
ここで、Catch句のExceptionを入力していきます。
今回エラーとなったのは、メモ帳が起動していなかったために起こったSelectorNotFoundExceptionでした。(これは上記のエラーメッセージで確認できます。)
これを入力していきましょう。
選択肢には上記の例外は存在していないので、Browse For Typesを選択します。
キャプチャ6.PNG

ここで、Catchしたい例外の名称を打ち込んで選択します。
キャプチャ7.PNG

無事に設定されました。
キャプチャ8.PNG

次にcatch内で行いたい処理を記述しましょう。
今回のケースでは、とりあえずメモ帳を起動して「例外を補足しました!」をタイプする事にします。
キャプチャ9.PNG
ここでは、ベタ打ちをしましたが以前書いたInvokeを組合わせると、同じロジックをあちこちで書かなくてよくなります。
この様にしてから、メモ帳を閉じた状態で処理を実行すると、メモ帳に「例外を補足しました!」という文字がタイプされます。メモ帳を閉じずに、もう一度実行すると、「これはテストです」がタイプされます。

また、例外には名前を付けられます。(例外のすぐ右側のexceptionがそれにあたります。)今回はデフォルト値のexceptionを使ってしまいましたが、複数の例外をCatchする場合には適切な名前を付けましょう。

最後に、Finallyです。こちらは、正常系の場合でも例外の場合でも必ず通る処理となります。
とりあえずメモ帳を閉じる処理を入れておきましょう。メモ帳の場合は単純に閉じるだけですと、保存するかどうか聞かれてしまうのでイケていないのですが、業務アプリやブラウザもFinallyで閉じるようにするとデスクトップ上に無用なプロセスが残らないので良いと思います。
キャプチャ10.PNG

UiPathを実際に使ってみると、様々なケースで例外が発生します。今回はメモ帳を再起動して処理をしましたが、例外の内容をログに書き込んでメール通知する等、他にも様々な使い道があります。
適切なエラーハンドリングは、ユーザーの使い勝手を向上させたり、障害を未然に防ぐことにつながりますので必ず意識するようにしましょう。

13
11
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?