UiPathはロジックを非常に簡単に記述できる半面、何かエラーがあった時の例外処理を、疎かにしがちかもしれません。
例えば下記の処理では、既に起動しているメモ帳に、「これはテストです。」という文章を書き込んでいます。
もちろん、上記の前提通りメモ帳が既に起動していれば良いのですが起動していない場合は下記のエラーが発生してプログラムが停止します。
Attachのデフォルトのタイムアウト時間は30秒ですから、ユーザーが手動で起動した場合には30秒待たされた挙句に、エラーが出るという悲しい事態になります…
これを避けるために例外処理を記述していきましょう。プログラムに親しんでいる方にはなじみがあると思いますが、try~catch
を使っていきます。
Attach処理で右クリックをすると、Sorround with Try Cath
があると思います。これを選択しましょう。
この時点ではが出ていて処理が実行できません。catchに適切な記述をするように求められています。
ここで、Catch句のExceptionを入力していきます。
今回エラーとなったのは、メモ帳が起動していなかったために起こったSelectorNotFoundException
でした。(これは上記のエラーメッセージで確認できます。)
これを入力していきましょう。
選択肢には上記の例外は存在していないので、Browse For Typesを選択します。
次にcatch
内で行いたい処理を記述しましょう。
今回のケースでは、とりあえずメモ帳を起動して「例外を補足しました!」をタイプする事にします。
ここでは、ベタ打ちをしましたが以前書いたInvokeを組合わせると、同じロジックをあちこちで書かなくてよくなります。
この様にしてから、メモ帳を閉じた状態で処理を実行すると、メモ帳に「例外を補足しました!」という文字がタイプされます。メモ帳を閉じずに、もう一度実行すると、「これはテストです」がタイプされます。
また、例外には名前を付けられます。(例外のすぐ右側のexceptionがそれにあたります。)今回はデフォルト値のexceptionを使ってしまいましたが、複数の例外をCatchする場合には適切な名前を付けましょう。
最後に、Finally
です。こちらは、正常系の場合でも例外の場合でも必ず通る処理となります。
とりあえずメモ帳を閉じる処理を入れておきましょう。メモ帳の場合は単純に閉じるだけですと、保存するかどうか聞かれてしまうのでイケていないのですが、業務アプリやブラウザもFinally
で閉じるようにするとデスクトップ上に無用なプロセスが残らないので良いと思います。
UiPathを実際に使ってみると、様々なケースで例外が発生します。今回はメモ帳を再起動して処理をしましたが、例外の内容をログに書き込んでメール通知する等、他にも様々な使い道があります。
適切なエラーハンドリングは、ユーザーの使い勝手を向上させたり、障害を未然に防ぐことにつながりますので必ず意識するようにしましょう。