Studio
2020.10
バナーの背景画像
サポート対象外
Studio ガイド
最終更新日 2023年12月20日

グローバル例外ハンドラー

グローバル例外ハンドラーは、実行エラーが発生した場合にプロジェクトの動作を決定するよう設計されたワークフローの一種です。オートメーション プロジェクト 1 件につき、グローバル例外ハンドラー を 1 つだけ追加できます。

注: グローバル例外ハンドラーが使用できるのはプロセスのみです。ライブラリには使用できません。

グローバル例外ハンドラーには 2 個の引数があります。これらは削除してはいけません

1 つ目の引数は [入力] 方向の errorInfo です。発生したエラーと失敗したワークフローに関する情報を格納します。ログ対象とするエラー レベルは [メッセージをログ] アクティビティで設定できます。
注: errorInfoActivityInfo プロパティを使用して、例外をスローしたアクティビティの名前を取得し、[出力] パネルに表示します。
2 つ目の引数は、出力方向の result です。エラー発生時に、この引数を使用してプロセスの次の動作を決定します。次の値が result 引数に割り当てられます。
  • Continue - 例外が再度スローされます。
  • 無視 - 例外を無視して、次のアクティビティから実行を続行します。
  • リトライ - 例外をスローしたアクティビティがリトライされます。errorInfoRetryCount メソッドを使用して、アクティビティのリトライ回数をカウントします。
  • 中止 - 現在のグローバル例外ハンドラーを実行した後に、実行が中止されます。

    注: Studio では、ライブラリ プロジェクト以外の任意のプロジェクトをグローバル例外ハンドラーとしてフラグ付けすることができます。

デバッグ中に発生したエラーを処理する

デバッグ中に例外が検出されると、失敗したアクティビティが強調表示され、実行が停止し、[ローカル] パネルと [コール スタック] パネルに例外の種類と詳細が表示されます。

[続行][停止] [リトライ][無視][再開][低速ステップ] などのデバッグ操作はリボンから使用できます。次のアクティビティから実行を継続する場合は、[無視] を使用します。

グローバル例外ハンドラーが介入することなく、[リトライ] ボタンは現在のアクティビティを実行しようとします。続行操作を行うと、result 引数で以前に選択された値 (ContinueIgnoreRetry、または Abort のいずれか) を考慮して、グローバル例外ハンドラーを実行します。
注:

[トライ キャッチ] を含むプロジェクトでグローバル例外ハンドラーを使用する際には、必ず [Try] コンテナーの内部の [シーケンス] にアクティビティをグループ化してください。グループ化しないと、グローバル例外ハンドラーは実行されません。

入れ子になったアクティビティの場合、グローバル例外ハンドラーは、コールスタックに含まれるそれぞれのアクティビティに対して実行されます。ただし、[トライ キャッチ] に直接カプセル化されている複数のアクティビティについては、これらが 1 つのアクティビティに格納されていない限り、グローバル例外ハンドラーは実行されません。

グローバル例外ハンドラーの使用例

次の例では、実行中に例外がスローされた場合のプロジェクトの動作を示します。

このオートメーション プロジェクトは、空で保存された Notepad ドキュメントの内部をクリックし、テキストを入力した後でアプリケーションを閉じるように設定されています。ただし、保存ボタンをクリックしてドキュメントを保存する前に、この操作が発生しないようにします。

エラー発生時のこのワークフローの動作を制御するために、グローバル例外ハンドラー はこのアクティビティを 3 回リトライしてから、エラー メッセージを表示して中止します。

ワークフローを作成する

  1. 基本のプロセスを作成する」の手順に従って、空のプロセスを作成します。
  2. Notepad を開き、ドキュメントを使用中のマシンに保存します。
  3. [アクティビティ] パネルから、[文字を入力] アクティビティをデザイナー パネルにドラッグします。このアクティビティは、自動的にシーケンスに追加されます。
  4. [文字を入力] アクティビティで、[画面上で指定] をクリックします。Studio が最小化し、[メモ帳] ウィンドウの内部をクリックしてセレクターを作成できるようになります。テキスト フィールドに、目的のテキストを引用符で囲んで入力します。
  5. [アクティビティ] パネルから、[ホットキーを押下] アクティビティをワークフローに追加します。[メモ帳] ウィンドウを指定し、このアクティビティから Ctrl を選択して、[キー] フィールドに「s」と入力します。こうすることで、テキストが入力された後に Notepad ドキュメントが保存されます。
  6. [アクティビティ] パネルから、[アプリケーションを閉じる] アクティビティをワークフローに追加します。[画面上で指定] を使用して、[メモ帳] ウィンドウを指定します。結果のワークフローは次のようになります。


グローバル例外ハンドラーを追加する

  1. リボンの一部である [デザイン] タブで、[新規作成] > [グローバル ハンドラー] を選択します。[新しいグローバル ハンドラー]ウィンドウが開きます。ハンドラーの名前を入力して、プロジェクト パスに保存します。[作成] をクリックすると、グローバル例外ハンドラー がオートメーション プロジェクトに追加されます。
  2. [変数] タブで、retryCount という名前で Int32 の変数を作成します。その範囲をグローバル例外ハンドラー全体に設定して、[既定値] フィールドは空のままにしておきます。この変数はリトライ回数を格納します。エラーが発生するたびに 1 ずつ数値がインクリメントされます。
  3. failedActivity という名前の String 変数を作成し、その範囲をワークフロー全体に設定します。この変数は失敗したアクティビティの名前を格納し、[出力] パネルに表示します。
  4. [アクティビティ] パネルから、[代入] アクティビティを [グローバル ハンドラー] シーケンスの [エラーのログ] の下に追加します。retryCount をアクティビティに追加して、errorInfo.RetryCount 式に代入します。これにより、例外がスローされる回数をカウントします。
  5. errorInfo.ActivityInfo.Name 式を failedActivity 変数に代入する別の[代入] アクティビティを追加します。この時点で、ワークフローは次のようになっています。


  6. [条件分岐 (if)] アクティビティをワークフローに追加します。[条件]retryCount < 3 に設定して、リトライ回数を 3 回に制限します。
  7. [Then] カテゴリの[代入] アクティビティの部分で、ErrorAction.Retryresult 変数に代入し、グローバル例外ハンドラーが例外をスローしたアクティビティをリトライするようにします。
  8. [Else] カテゴリで、ErrorAction.Abortresult に代入し、条件に適合したときにグローバル例外ハンドラーが実行を中止するようにします。[条件分岐 (if)] アクティビティは次のようになります。


グローバル例外ハンドラーは例外を検出すると、失敗したアクティビティの名前をログし、そのアクティビティを 3 回リトライします。実行のたびに同じ例外が発生し、リトライ回数が 3 回に達した場合、例外をスローしたアクティビティのレベルで実行を中止します。

試行中に 1 回でも例外が発生しなかった場合には、ワークフローの実行が継続され、グローバル例外ハンドラーは介入しません。

Was this page helpful?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
UiPath ロゴ (白)
信頼とセキュリティ
© 2005-2024 UiPath. All rights reserved.