【UiPath応用】第7回:エラーハンドリング~「転んでもタダでは起きない」ロボットの作り方~

こんにちは!UiPath メンターです。

「ファイルが見つかりません」
「セレクターが見つかりません」

これまで、こういったエラーが出るとロボットはその場で赤字のメッセージを出して「停止」していました。
しかし、100件のデータを処理中に、たまたま1件だけデータがおかしくて止まってしまったら?
残りの99件も未処理になってしまいます。これは困りますよね。

今回は、想定外のトラブルが起きてもロボットを止めずに、「エラーをキャッチして対処する」仕組み、トライ キャッチ (Try Catch) をマスターしましょう。

1. 魔法の防護ネット:「トライ キャッチ」

サーカスで空中ブランコをする時、下にネットがあれば落ちても大丈夫ですよね。
「トライ キャッチ」は、まさにその「防護ネット」です。

手順

  1. [アクティビティ] パネルで「トライ」と検索します。
  2. [トライ キャッチ (Try Catch)] をドラッグ&ドロップします。

このアクティビティは、3つの部屋(セクション)に分かれています。

  • Try (試行): 普段やる仕事(エラーが起きるかもしれない危険な処理)
  • Catch (キャッチ): エラーが起きた時にやること(救済措置)
  • Finally (必ず実行): 成功しても失敗しても、最後に必ずやること(後片付け)

2. Try:いつもの処理を入れる

まず、[Try] の枠の中に、自動化したい処理を入れます。
例えば、「Excelを開いてデータを書き込む」という一連の流れをここに入れます。

この中でエラーが発生すると、ロボットは即座に処理を中断し、[Catch] の部屋へワープします。
つまり、エラー画面を出して止まることはありません。

3. Catch:エラーの種類を選ぶ

次に、[Catch] の設定です。
「どんなエラーなら救うか」を指定する必要があります。

  1. [Catch] セクションにある [新しいキャッチを追加 (Add new catch)] をクリックします。
  2. リストが出てきますが、最初は一番汎用的な System.Exception を選びましょう。

💡 メンターからのアドバイス:System.Exceptionとは?

「ファイルがない」「計算ミス」「アプリのフリーズ」など、技術的なエラーのほぼ全てをカバーする親玉です。
迷ったらとりあえずこれを選んでおけば、どんなエラーでもキャッチしてくれます。

エラー時の対処を書く

System.Exception を選ぶと、その中にアクティビティを置けるようになります。
ここに「エラーが起きた時の動き」を作ります。

  • [メッセージをログ (Log Message)]: 「エラーが発生しました」と記録を残す。
  • [スクリーンショットを撮る (Take Screenshot)]: エラー画面を画像で保存する。
  • [メールを送信]: 管理者にアラートメールを送る。

また、ここで exception.Message という変数を使うと、「なぜエラーになったか(エラーメッセージ)」の中身を取り出せます。

4. Finally:最後のお片付け

[Finally] は、エラーが起きても起きなくても必ず通るルートです。
ここには「後片付け」を入れます。

  • [Excel プロセス スコープ] の終了処理
  • [アプリケーションを閉じる]

ここをしっかり作っておけば、「エラーで止まったせいでExcelが開きっぱなし(ゾンビ化)」という事故を防げます。

5. 実践パターン:ループの中に入れる

実務で一番使うのがこのパターンです。
「繰り返し (For Each)」の中に「トライ キャッチ」を入れるのです。

動きのイメージ

  1. 1件目のデータ処理開始(Try) → 成功 → 次へ
  2. 2件目のデータ処理開始(Try) → エラー発生! → Catchへワープ → 「エラーログ」を出力 → 次へ
  3. 3件目のデータ処理開始(Try)……

こうすることで、「エラーが出たデータだけスキップして、最後まで完走する」という最強のロボットになります。

今回のまとめ

  • [トライ キャッチ] はロボットの防護ネット。
  • Try にやりたいこと、Catch にエラー時の対応、Finally に後片付けを書く。
  • ループの中に配置すれば、1件エラーになっても止まらずに次へ進める。

⚠️ つまづきポイント:Catchの設定を忘れる

Catchセクションで System.Exception を選んだだけで満足して、中身(ログ出力など)を空っぽにしてしまうと、「エラーが起きたのに無視して進む(エラーに気づけない)」という恐ろしい状態になります(握りつぶしと言います)。
必ず「ログ出力」などの報告処理を入れてください。

次回は、ロボットが大きくなってきた時の整理術。
「ワークフローの分割(Invoke Workflow)」です。
1つのファイルに全てを書くのではなく、部品ごとにファイルを分けることで、メンテナンスが劇的に楽になります。

タイトルとURLをコピーしました