例外発生時の処理の流れの確認

こんにちは。UiPath Studio EnterPrise版23.4.2ユーザの初心者です。

Edgeに自動ログイン後、指定フォルダに配置されたファイルを1つずつWebにアップロードするワークフローをデバッグ中です。
指定フォルダのファイルリストフルパスをリスト変数lis_Pathに取得後、リスト変数lis_Pathの値をString変数に変換して、添付画像のフローチャート内で回しています。

3点ご教示ください。

  1. 添付画像のAで1件分のファイルをWebアップロードしています。添付画像のフローチャート全体はTry CatchアクティビティのTry Blockで囲んでいますが、
    添付画像のAの処理も、Try Catchアクティビティで囲む必要はありますか?

  2. 1.の回答がYESの場合、添付画像のAのCatch Blockで呼び出す、ErrorHandler.xaml内でTerminate Workflowを呼び出してはいけないという認識で合っていますか?

  3. 1.の回答がYESの場合、添付画像のAの中で例外が発生しても、例外処理はA内に配置されたErrorHandler.xaml内で実施するため、Aを抜けたBではSystem.Exception変数は初期化され、
    Bから左方向の例外発生なしの方に処理が流れるという認識で合っていますか?(指定フォルダに2件ファイルが配置され、1件目で例外発生、2件目が正常処理という状態を想定しています)

添付画像の A の処理がすでに上位レベルの Try Catch アクティビティで囲まれている (フローチャート全体を囲んでいる) 場合は、別の Try Catch アクティビティで囲む必要はありません。 Try Catch アクティビティの目的は、そのスコープ内で発生する例外を処理することです。アクティビティ A 内で例外が発生し、フローチャート全体を囲む Try Catch アクティビティによってキャッチされなかった場合、例外を処理するための適切なキャッチ ブロックが見つかるまで、コール スタックを自動的に上に伝播します。この場合、上位レベルの Try Catch アクティビティが例外をキャッチし、フローはそれを囲んでいる Try Catch アクティビティの Catch ブロックに進みます。

正解です。Try Catch アクティビティをより高いレベル (フローチャート全体を囲む) で使用している場合は、特定のアクティビティ A に対して ErrorHandler.xaml の “Terminate Workflow” を呼び出さないでください。“Terminate Workflow” を呼び出すと、ワークフローの実行全体が停止します。これには、それを囲む Try Catch アクティビティが含まれます。代わりに、ErrorHandler.xaml にエラーを記録し、(処理するファイルが他にもある場合) 次のファイルのアップロードを続行するか、単に例外を上位レベルの Try Catch アクティビティに伝播させることができます。

はい。それで合っています。アクティビティ A で例外が発生し、上位レベルの Try Catch アクティビティによってキャッチされた場合、ErrorHandler.xaml で例外処理が行われます。例外が処理された (必要に応じてログに記録または処理された) 後、フローは例外が発生しなかった次のアクティビティ B に進みます。 Try Catch ブロック内で変更されていないと仮定すると、Try Catch ブロックの前に初期化された変数はその値を保持する必要があります。その後、フローは 2 番目のファイルの処理を続行し (ファイルが 2 つあると仮定)、例外が発生しなければ、意図したとおりに処理が続行されます。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.