エラーを捕捉(Try)
2179 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にログインし、チャットよりお問い合わせください。