「トライキャッチ」アクティビティと繰り返し処理を組み合わせて使用する際の注意点を説明します。
繰り返し処理の途中でエラーが発生し、breakした際の動作について
繰り返し処理を実行中にエラーが発生した際に、そのままエラー終了せずにログ出力などを行ないたい場合にトライキャッチ(TryCatch)を使うことが出来ます。
その場合、繰り返し処理自体を終了するためにCatches部やFinally部に「break」アクティビティを配置して繰り返し処理を終了することが考えられますが、コボットPlatformの仕様として注意すべき点はこちらです。
Case1とCase2ではワークフローを元に説明いたします。
Case1.Catches部に「break」を入れた際の動作
下図のようなワークフローを用意します。
itemの値が"a","b","c","d","e"と変化しながらトライキャッチの処理を繰り返していきますが、itemの値が"b"の時に「スロー」アクティビティによってExceptionが発生し、Catches部の処理に移ります。
Catchesの中身と、Finallyの中身は次のようになっています。
【Catches】
【Finally】
エラー時に繰り返し処理を終了する目的で、Catches部にbreakを配置しています。
しかし、先に述べたように、Catches部・Finally部の処理はbreakが入っていても最後まで実行されるため、下の図のように出力パネル内のログに「Catch - before」「Catch - after」「finally」が書き込まれて、処理が終了します。
Case2.Finally部に「break」を入れた際の動作
Case1のワークフローをベースに、CatchesとFinallyの中身を次のように変更したワークフローを用意します。
【Catches】
【Finally】
今回の場合、Finallyにbreakを入れているため、繰り返し一回目のFinally実行時にbreakが実行されて繰り返しが終了します。
しかし、先に述べたようにFinally内の処理はbreakが入っていても最後まで実行されるため、
出力パネル内のログには「finally -before」「finally - after」が両方とも記載されてから処理が終了します。