Try-Catch
このステップでは、アクションを実行し、そのアクションによって発生することがある 1 つ以上の例外をキャッチします。このステップは、3 つの部分に分割された多くの分岐から構成されています。
- Try 分岐:実行するアクションを指定する最上部分。
- Catch 分岐:Try 分岐のアクションの実行時にスローされる可能性がある 1 つ以上の例外と、それが発生した場合に実行するアクションを指定します。複数の Catch 分岐を設定することができ、それぞれの Catch 分岐は同じ方法で処理される任意の数の例外をリストできます。
- Finally 分岐:実行するアクションを指定します。この分岐は、Try と Catch の実行結果に関係なく、常に最後に実行されます。
例外は、Throwによって明示的にスローされるか、その他のステップで実行中にエラーが発生するためスローされます。スローされた例外は、事前定義の例外と呼ばれます。

プロパティ
- 名前
- ステップの名前が含まれます。
- トライ
- 実行するアクションを指定します。アクションの結果として例外が予想される場合、 Catch ブロックで例外を指定します。
- 例外
- キャッチすることが予想される 1 つ以上の例外を指定します。
Catch 分岐はそれぞれ例外のリスト、およびその右側にある、Try 分岐の実行でこれらのいずれかの例外がスローされた場合に実行するアクションで構成されます。
各例外には、Throw ステップで使用される例外名、または事前定義された例外名に対応する名前が付けられます。
Catch 分岐で例外が追加または編集されると、エディターでは Try 分岐内でスローされる可能性があり、かつ Catch 分岐にまだリストされていない例外が提案されます。
- Finally
- Try-Catch ステップを終了する直前に実行するアクションを指定します。
実行
Try-Catch ステップの実行は、その他のステップよりも少し複雑です。最も一般的な実行ケースは最もシンプルで、最初に説明します。最も複雑なケースは Finally 分岐にステップが含まれている (空ではない) 場合です。
すべてのケースで、Try-Catch ステップの実行は、Try 分岐を実行することから始まります。これは正常に終了するか、いずれかのステップによってスローされる例外によって終了できます。
- 最も一般的なケース:Finally 分岐が空
-
- Try 分岐が正常に終了
- 実行は、Try-Catch ステップ全体の後のステップで続行されます。つまり、Catch 分岐はこの場合は実行されません。
- Try 分岐がスローされた例外で終了
- 例外をスローするステップから、実行は例外をリストする Catch 分岐の開始を直接続行します。
- より複雑なケース:Finally 分岐が空
-
- Try 分岐がスローされた例外で終了するが、Catch 分岐はその例外をリストしない
- このケースは、Try-Catch ステップ自体が例外をスローしたように扱われ、その他のステップが例外をスローした場合と同じ方法で処理されます。ここにリストされているすべてのケースが適用されます。注 この戦略 (「Try-Catch ステップ自体が例外をスローしたように扱われる」) は、その他多くのケースで使用されます。
すべての Try-Catch ステップに空の Finally 分岐がある場合、ワークフロー ロジックで周囲の Try-Catch ステップの一致する Catch 分岐が検索され、どの Try 分岐にこの Try-Catch ステップが含まれているかが検索されます。そのような Catch 分岐が周囲の Try-Catch ステップに見つからない場合、例外はワークフロー内で "not handled" に設定されます。こうした場合、ワークフローおよび含まれる「Desktop Automation ロボットの呼び出し」ステップの実行が停止し、「Desktop Automation ロボットの呼び出し」ステップの [エラー処理] タブで指定したとおりにエラーが処理されます。
Try-Catch ステップに Finally 分岐も含まれている場合、実行は同様ですが、1 度に 1 つの "throw" が実行されます。
- Try 分岐がスローされた例外で終了し、当該の Catch 分岐もスローされた例外で終了する
- Catch 分岐でスローされた例外は同じ Try-Catch ステップの Catch 分岐では処理されません。代わりに、これは Try-Catch ステップ自体がその例外をスローしたように扱われます。詳細については、前のケースの説明を参照してください。
- ネストされた Try-Catch ステップに関する注意
- Try-Catch ステップによって処理される例外は、周囲の Try-Catch ステップによって処理されません。例外を処理できる Catch 分岐が見つかると、例外は完全に処理されたものとみなされ、"forgotten" になります。Catch 分岐の実行が開始し、通常の方法で続行します。そのため、各例外は一度だけ処理されます。
- 最も複雑なケース:Finally 分岐が空ではない
- この場合、実行の状態に関係なく、Finally 分岐のステップは実行が Try-Catch ステップで終了する直前に実行されます。次のケースで、これがどのように動作するかを上記のケースごとに詳述します。
- Try 分岐が正常に終了
- 例外は Finally 分岐のステップで続行します。その後のことは、Finally 分岐の実行がどのように終了するかによって異なります。
-
Finally 分岐の実行が正常に終了すると、実行は Try-Catch ステップ全体の後のステップで続行されます。
-
例外が Finally 分岐の実行中にスローされる場合、これは Try-Catch ステップ自体がその例外をスローしたように扱われます。
-
- Try 分岐はスローされた例外で終了し、Catch 分岐は正常に終了する
- Catch 分岐の実行後、ロジックは前のケースのとおりです。
- Try 分岐がスローされた例外で終了するが、Catch 分岐はその例外をリストしない
- この場合、例外は "remembered" となり、実行は Finally 分岐のステップで続行されます。その後のことは、Finally 分岐の実行がどのように終了するかによって異なります。
-
Finally 分岐の実行が正常に終了すると、実行は Try-Catch ステップ自体が "remembered" の例外を再度スローするかのように続行されます。
-
例外が Finally 分岐の実行時にスローされると、これは同じ Try-Catch ステップの Catch 分岐によって処理されません。代わりに、これは Try-Catch ステップ自体がその例外 (つまり、Finally 分岐によってスローされた例外) をスローしたように扱われます。"remembered" の例外はこの時点では事実上 "forgotten" です。
-
- Try 分岐はスローされた例外で終了し、当該の Catch 分岐もスローされた例外で終了する
- これは、"remembered" の例外が Try 分岐ではなく、Catch 分岐によってスローされたものであることを除き、前のケースと同様に処理されます。上記のように、Try 分岐によってスローされた例外が Catch 分岐の実行開始時に完全に処理され、"forgotten" になります。
事前定義の例外
ステップで実行中にエラーが発生した場合、次のいずれかの例外がスローされます。これらの例外は必要に応じて Throw ステップによって明示的にスローすることもできます。
ステップ エラーのためにスローされると、事前定義の例外にはその問題を説明するメッセージが含まれます。このメッセージは、例外がワークフローの Try-Catch ステップで処理されず、「Desktop Automation ロボットの呼び出し」ステップの実行が終了される場合に利用できるようになります。
すべての「内部」例外は事前定義されているため、名前を変更することはできません。「ユーザー定義」例外の名前は、タイムアウトが参照しているステップ アクションの種類によっては、ユーザーが変更することも可能です。たとえば、[InputNameTimeOut] または [LoginTimeOut] に変更できます。
- TimeOutError: 実行がタイムアウトした場合にスローされます。
- FinderIssue: ファインダーでエレメントが見つからなかった場合にスローされます。
- DeviceIssue: ステップの実行を妨げるデバイスまたはドライバーの問題の場合にスローされます。
- IncorrectValueIssue: "one".substring(-1) の -1 など、エクスプレッションの値が使用場所で適切でない場合にスローされます。
- ExtractIssue: 抽出ステップで抽出に失敗した場合にスローされます。
- DivisionByZeroIssue: エクスプレッションの評価中にゼロ除算 (またはゼロ剰余) が発生した場合にスローされます。
- OverFlowIssue: エクスプレッションの評価でオーバーフローが発生した場合にスローされます。
- ConversionIssue: エクスプレッションの評価中に "one".integer() など、タイプ間の変換が失敗した場合にスローされます。
エクスプレッションがステップの一部であるときはいつでも、ステップの実行で次の例外がスローされることがあります。
-
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、エクスプレッションの問題 |
ガード チョイス |
上記の表にリストされているガードによって異なります |
Try-Catch |
なし |
Break |
なし |
Throw |
なし |
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、エクスプレッションの問題 |