トライ-キャッチ

このステップでは、アクションを実行し、そのアクションによって発生することがある 1 つ以上の例外をキャッチします。このステップは、3 つの部分に分割された多くの分岐から構成されています。

  • トライ分岐:実行するアクションを指定する最上部分。
  • キャッチ分岐:トライ分岐のアクションの実行時にスローされる可能性がある 1 つ以上の例外と、それが発生した場合に実行するアクションを指定します。複数のキャッチ分岐を設定することができ、それぞれのキャッチ分岐は同じ方法で処理される任意の数の例外をリストできます。
  • ファイナル分岐:実行するアクションを指定します。この分岐は、トライとキャッチの実行結果に関係なく、常に最後に実行されます。

例外は、スローによって明示的にスローされるか、その他のステップで実行中にエラーが発生するためスローされます。スローされた例外は、事前定義の例外と呼ばれます。

ワークフローの トライ-キャッチ ステップ

プロパティ

名前
ステップの名前が含まれます。
トライ
実行するアクションを指定します。アクションの結果として例外が予想される場合、キャッチ ブロックで例外を指定します。
例外
キャッチすることが予想される 1 つ以上の例外を指定します。

キャッチ分岐はそれぞれ例外のリスト、およびその右側にある、トライ分岐の実行でこれらのいずれかの例外がスローされた場合に実行するアクションで構成されます。

各例外には、スロー ステップで使用される例外名、または事前定義された例外名に対応する名前が付けられます。

キャッチ分岐で例外が追加または編集されると、エディターでは トライ分岐内でスローされる可能性があり、かつキャッチ分岐にまだリストされていない例外が提案されます。

ファイナル
トライ-キャッチ ステップを終了する直前に実行するアクションを指定します。

実行

トライ-キャッチ ステップの実行は、その他のステップよりも少し複雑です。最も一般的な実行ケースは最もシンプルで、最初に説明します。最も複雑なケースはファイナル分岐にステップが含まれている (空ではない) 場合です。

すべてのケースで、トライ-キャッチ ステップの実行は、トライ分岐を実行することから始まります。これは正常に終了するか、いずれかのステップによってスローされる例外によって終了できます。

最も一般的なケース:ファイナル分岐が空
トライ分岐が正常に終了
実行は、トライ-キャッチ ステップ全体の後のステップで続行されます。つまり、キャッチ分岐はこの場合は実行されません。
トライ分岐がスローされた例外で終了
例外をスローするステップから、実行は例外をリストするキャッチ分岐の開始を直接続行します。
より複雑なケース:ファイナル分岐が空
トライ分岐がスローされた例外で終了しても、キャッチ分岐はその例外をリストしない
このケースは、トライ-キャッチ ステップ自体が例外をスローしたように扱われ、その他のステップが例外をスローした場合と同じ方法で処理されます。ここにリストされているすべてのケースが適用されます。

この戦略 (「トライ-キャッチ ステップ自体が例外をスローしたように扱われる」) は、その他多くのケースで使用されます。

すべての トライ-キャッチ ステップに空のファイナル分岐がある場合、ワークフロー ロジックで周囲の トライ-キャッチ ステップの一致するキャッチ分岐が検索され、どの トライ分岐にこの トライ-キャッチ ステップが含まれているかが検索されます。そのようなキャッチ分岐が周囲の トライ-キャッチ ステップに見つからない場合、例外はワークフロー内で "not handled" に設定されます。こうした場合、ロボット ワークフローおよび含まれている「ロボットの呼び出し」ステップ の実行は停止し、「ロボットの呼び出し」ステップの [エラー処理] タブで指定したとおりにエラーが処理されます。

トライ-キャッチ ステップにファイナル分岐も含まれている場合、実行は同様ですが、1 度に 1 つの "スロー" が実行されます。

トライ分岐がスローされた例外で終了し、当該のキャッチ分岐もスローされた例外で終了する
キャッチ分岐でスローされた例外は同じ トライ-キャッチ ステップのキャッチ分岐では処理されません。代わりに、これは トライ-キャッチ ステップ自体がその例外をスローしたように扱われます。詳細については、前のケースの説明を参照してください。
ネストされた トライ-キャッチ ステップに関する注意
トライ-キャッチ ステップによって処理される例外は、周囲の トライ-キャッチ ステップによって処理されません。例外を処理できるキャッチ分岐が見つかると、例外は完全に処理されたものとみなされ、"forgotten" になります。キャッチ分岐の実行が開始し、通常の方法で続行します。そのため、各例外は一度だけ処理されます。
最も複雑なケース:ファイナル分岐が空ではない
この場合、実行の状態に関係なく、ファイナル分岐のステップは実行が トライ-キャッチ ステップで終了する直前に実行されます。次のケースで、これがどのように動作するかを上記のケースごとに詳述します。
トライ分岐が正常に終了
例外はファイナル分岐のステップで続行します。その後のことは、ファイナル分岐の実行がどのように終了するかによって異なります。
  • ファイナル分岐の実行が正常に終了すると、実行は トライ-キャッチ ステップ全体の後のステップで続行されます。

  • 例外がファイナル分岐の実行中にスローされる場合、これは トライ-キャッチ ステップ自体がその例外をスローしたように扱われます。

トライ分岐はスローされた例外で終了し、キャッチ分岐は正常に終了する
キャッチ分岐の実行後、ロジックは前のケースのとおりです。
トライ分岐がスローされた例外で終了しても、キャッチ分岐はその例外をリストしない
この場合、例外は "remembered" となり、実行はファイナル分岐のステップで続行されます。その後のことは、ファイナル分岐の実行がどのように終了するかによって異なります。
  • ファイナル分岐の実行が正常に終了すると、実行は トライ-キャッチ ステップ自体が "remembered" の例外を再度スローするかのように続行されます。

  • 例外がファイナル分岐の実行時にスローされると、これは同じ トライ-キャッチ ステップのキャッチ分岐によって処理されません。代わりに、これは トライ-キャッチ ステップ自体がその例外 (つまり、ファイナル分岐によってスローされた例外) をスローしたように扱われます。"remembered" の例外はこの時点では事実上 "forgotten" です。

トライ分岐はスローされた例外で終了し、当該のキャッチ分岐もスローされた例外で終了する
これは、"remembered" の例外が トライ分岐ではなく、キャッチ分岐によってスローされたものであることを除き、前のケースと同様に処理されます。上記のように、トライ分岐によってスローされた例外がキャッチ分岐の実行開始時に完全に処理され、"forgotten" になります。

事前定義の例外

ステップで実行中にエラーが発生した場合、次のいずれかの例外がスローされます。これらの例外は必要に応じて スロー ステップによって明示的にスローすることもできます。

ステップ エラーのためにスローされると、事前定義の例外にはその問題を説明するメッセージが含まれます。このメッセージは、例外がロボット ワークフローの トライ-キャッチ ステップで処理されず、「ロボットを呼び出す」ステップ の実行が終了された場合に利用できるようになります。

すべての「内部」例外は事前定義されているため、名前を変更することはできません。「ユーザー定義」例外の名前は、タイムアウトが参照しているステップの種類によっては、ユーザーが変更することも可能です。たとえば、[InputNameTimeOut] または [LoginTimeOut] に変更できます。

  • TimeOutError: 実行がタイムアウトした場合にスローされます。
  • FinderIssue: ファインダーで要素が見つからなかった場合にスローされます。
  • DeviceIssue: ステップの実行を妨げるデバイスまたはドライバーの問題の場合にスローされます。
  • IncorrectValueIssue: "one".substring(-1)-1 など、エクスプレッションの値が使用場所で適切でない場合にスローされます。
  • ExtractIssue: 抽出ステップで抽出に失敗した場合にスローされます。
  • DivisionByZeroIssue: エクスプレッションの評価中にゼロ除算 (またはゼロ剰余) が発生した場合にスローされます。
  • OverFlowIssue: エクスプレッションの評価でオーバーフローが発生した場合にスローされます。
  • ConversionIssue: エクスプレッションの評価中に "one".integer(). など、タイプ間の変換が失敗した場合にスローされます。
  • DisappearedIssue: アクションを実行する対象のコンポーネントまたはアプリケーションが見つからなかった場合にスローされます。

エクスプレッションがステップの一部である場合は、ステップの実行で次の例外がスローされることがあります。

  • IncorrectValueIssue

  • DivisionByZeroIssue

  • OverflowIssue

  • ConversionIssue

以下の表に、ステップ、ファインダー、およびその他のワークフロー エレメントでスローされる可能性のある例外をリストします。エクスプレッションの問題は、エクスプレッションを持つステップによってスローされる問題です。

ワークフロー エレメント

例外

ステップ

クリック

DeviceIssue、FinderIssue、エクスプレッションの問題

テキストを入力

DeviceIssue、FinderIssue、エクスプレッションの問題

キープレス

DeviceIssue、FinderIssue、エクスプレッションの問題

スクロール

DeviceIssue、FinderIssue、エクスプレッションの問題

マウス移動

DeviceIssue、FinderIssue、エクスプレッションの問題

クリップボードへ割り当て

DeviceIssue、エクスプレッションの問題

割り当て

エクスプレッションの問題

値を抽出

DeviceIssue、FinderIssue、エクスプレッションの問題、ExtractIssue

クリップボードから抽出

DeviceIssue

画像抽出

DeviceIssue、FinderIssue、エクスプレッションの問題、ExtractIssue

ツリーを XML として抽出

DeviceIssue、FinderIssue、エクスプレッションの問題、ExtractIssue

画像からテキスト抽出

DeviceIssue、FinderIssue、エクスプレッションの問題

ループ

なし

条件

エクスプレッションの問題

グループ化

なし

With

DeviceIssue、FinderIssue、エクスプレッションの問題

ガード チョイス

上記の表にリストされているガードによって異なります

トライ-キャッチ

なし

ブレイク

なし

スロー

なし

Return

エクスプレッションの問題

開く

DeviceIssue、エクスプレッションの問題

デバイスに接続

DeviceIssue、エクスプレッションの問題

リモート デバイス アクション/スクリーンのロック コマンド

DeviceIssue、エクスプレッションの問題

リモート デバイス アクション/その他

DeviceIssue

エクスプレッション

任意のエクスプレッション

IncorrectValueIssue、DivisionByZeroIssue、OverFlowIssue、ConversionIssue

ガード

時間経過

エクスプレッションの問題、IncorrectValueIssue

該当するアプリケーション

エクスプレッションの問題、DeviceIssue、FinderIssue

該当しないアプリケーション

エクスプレッションの問題、DeviceIssue、FinderIssue

該当するロケーション

エクスプレッションの問題、DeviceIssue、FinderIssue

該当しないロケーション

エクスプレッションの問題、DeviceIssue、FinderIssue

取り除かれたロケーション

エクスプレッションの問題、DeviceIssue、FinderIssue

ツリー変更停止

エクスプレッションの問題、IncorrectValueIssue、DeviceIssue、FinderIssue

ファインダー

デバイス ファインダー

DeviceIssue

アプリケーション ファインダー

DeviceIssue、FinderIssue、エクスプレッションの問題

コンポーネント ファインダー

DeviceIssue、FinderIssue、エクスプレッションの問題

ガード チョイス ステップは、ステップで使用されるガードに応じて、以下の例外をスローします。

ガード

例外

時間経過

エクスプレッションの問題

その他

DeviceIssue、FinderIssue、エクスプレッションの問題