0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【UiPath】TryブロックやCatchブロック内にcontinueやbreakを置いてもFinallyブロックは実行される

Posted at

先日、Pythonの学習を行っていた際に以下の記述を見つけた。

もし try 文が break 文、 continue 文または return 文のいずれかに達すると、その break 文、 continue 文または return 文の実行の直前に finally 節が実行されます。

この動作はどのプログラムでもだいたい同じらしい。
ということでUiPathでも実際にそうなるのかを検証する。

検証

パターン A: continueもbreakも無し

「繰り返し(指定回数)」アクティビティを使って2回ループを回し、Tryブロックで2回、Finallyブロックで1回ログを出力するワークフローを作成した。まずはcontinueもbreakも使わないパターンとして実行し、想定通りに2回のループで3回づつ、計6回ログが出力されていることが確認できる。

image.png
image.png

パターン B: Tryブロックにcontinue

Tryブロックのログ出力とログ出力の間にcontinue(現在の繰り返しをスキップ)を置く。この場合、Tryブロックのcontinueの後のログは出力されていないが、Finallyブロックのログは出力されている。
image.png
image.png

パターン C: Finallyブロックにbreak

Finallyブロックのログ出力の前にbreak(繰り返しを終了)を置くと、Finallyブロックのログを出力した後に繰り返しを中断している。Finallyブロック内にcontinueやbreakを置いた場合でも、Finallyブロックは全て実行されるようだ。
image.png
image.png

パターン D: Tryブロックにbreak、Finallyブロックにcontinue

TryとFinallyでループに対して別の指示を出してみたところ、Tryブロックのbreakが効いたのかループは1回で終わっている。この場合でも例によってFinallyブロックはきっちり最後まで実行されている。
image.png
image.png

パターン E: Tryブロックにcontinue、Finallyブロックにbreak

パターンDの逆の組み合わせ。画像は省略するが、この場合でもパターンDと同じ結果になる。continueとbreakではbreakが優先されるのだろうか?

パターン F: Tryブロックにbreak、Finallyブロックにbreak

この場合、恐ろしいことにワークフローが終了しなくなる。内部的に無限ループになっているのだろうか?
この現象はFinallyブロックにbreakを2個配置した場合でも発生した。breakの指示を受け取ったままもう一度breakを踏むと固まるのかもしれない。なお、Tryブロックには仮にbreakを2個配置していても一つ目のbreakを踏んだ時点でFinallyに飛ぶので、特に問題はない。
image.png
image.png

パターン F: Tryブロックにcontinue、Finallyブロックにcontinue

こちらは特に異常な挙動は見せずにパターンBと同じ結果になる。ループが2回スキップされたりもしない。

image.png

image.png

まとめ

記載は割愛したが、TryブロックではなくCatchブロックにcontinueやbreakを置いた場合でも同じ挙動になる。まとめとしては以下の通り。

  • Try・Catch・Finallyの各ブロック内にcontinue・breakを置いても、Finallyブロックは最後まで実行される
  • TryとFinallyの各ブロック両方にbreak置いたり、Finallyブロックにbreak2個置くと固まる

参考

動作環境

UiPath.System.Actibities 24.10.7

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?