エラーを捕捉(Try)
3258 views
この記事では、Try処理の設定方法について紹介します。
【できるようになること】
- Try処理を設定
- エラーをキャッチ
Try処理
AUTOROのワークフロー実行中にエラーが発生した場合、基本的にワークフローは強制終了され、エラーが発生したタスクより後にあるタスク(アクション)については、実行されません。
ここで、エラーが発生した際にワークフローを強制終了(エラー終了)させたくない場合は、エラーを捕捉する(Try)処理を利用します。
Try処理の範囲内に設置されたアクションについては、エラーが発生した場合であっても、ワークフローが強制終了されることはありません。
この処理を用いると、以下のような不確定なエラーが予期されている場合に、強制終了を回避することが可能となります。
- 意図しないエラー(コネクション先のサーバーエラーなど)
- 偶発的に発生するエラー

ワークフローの設定例
例として、以下のような構成のワークフローの設定方法を紹介します.
- 「エラーを捕捉する(Try)」を設置
- Tryの範囲内でエラーが発生した/しなかった場合の処理を記述する
Try処理の設定で必要になるパラメーターは「エラーを格納する変数名」のみです。
範囲内でエラーが発生した場合、エラー内容はここで定義された変数に保存されます。

Try処理で取得したエラーは、「エラーを格納する変数名」に設定した変数に保存されます。
後続の処理では${変数名}のフォーマットでエラー値を呼び出すことができます。
このエラー値を条件式内で呼び出すことにより、エラーが発生したか否かを判定することができます。
- 条件分岐(IF)を、エラーを捕捉する(Try)の範囲”外”に設置します
- エラーが存在するか否かを判定する条件式を入力します
// エラーが発生した時の条件式 ${変数名} //エラーが発生しなかった時の条件式 ${!変数名} - 条件分岐(IF)の範囲内に、条件式に応じた処理を記述します

なお、Try内部でエラーが発生した際の処理が不要な場合は、このIFも不要となります。
格納されるエラーオブジェクト( ${error_obj} )の値は、次のような内容になっています。
{
"message": "Error: something went wrong.", // エラーメッセージ
"task_name": "+try_1+sub_try+click_point_1", // エラーが発生したタスクの名前
"attempt_id": "2611", // エラーが発生した実行のID
"session_time": "2020-08-24T22:16:45+09:00" // エラーが発生したセッションの開始時刻
}これらの値は、以下のような記法にて、ワークフロー内のテキストとして呼び出すことが可能です(エラーが発生した場合のみ)。
${エラーを格納する変数名.message}
${エラーを格納する変数名.task_name}
${エラーを格納する変数名.attempt_id}
${エラーを格納する変数名.session_time}
以下のエラーは、捕捉ができません。
このエラーは、基本的には内部システム的なエラーを意味します。
- unhandledRejection

# ブラウザを開く
+open_browser_1:
action>: OpenBrowser
url: 'https://docs.autoro.io'
lang: 'ja-JP'
headless: true
useShadowDomSelector: false
private: false
# エラーを捕捉する
+try_1:
try>: error_obj
_do:
# 日時を取得
+get_time_1:
action>: GetTime
format: 'YYYY-MM-DD HH:mm'
timezone: 'Asia/Tokyo'
relativeTime: ''
private: false
# クリック
+click_1:
action>: Click
browser: +open_browser_1
selector: body
confirm: true
ignoreError: true
timeout: 30000
private: false
# ページからデータを抽出(故意にエラーを発生させています)
+extract_data_1:
action>: ExtractData
browser: +click_1
extractor: hogehoge
format: csv
multiple: false
private: false
# 真のとき エラーが発生した時
+if_1:
if>: ${error_obj}
_do:
# テキストを作成
+text_1:
action>: Text
text: "ログ:エラーが発生しました\n${error_obj.message}"
private: false
<Try>エラーを捕捉する
このページは役に立ちましたか?
サイトを見て解決しない場合はAUTOROにログインし、チャットよりお問い合わせください。