Try Catchの使い方について

Try catchの使い方について十分理解ができておらず、ご教授いただけませんでしょうか。

Invoke workflowで呼び出される(または、ライブラリのアクティビティとして作成した)ワークフロー内で、一時ファイルを作成して利用しており、呼び出されたフロー内で例外が発生した場合に、一時ファイルを削除して呼び出し元に戻り、エラー(例外)になってほしいと考えております。
呼び出し元のワークフローの例外が起きる処理をTry Catchの中に入れ、FinallyでTEMPファイルを削除 とすると、一時ファイルは削除されましたが、呼び出し元のワークフローはエラーで止まってくれませんでした。
Catchのなかにスローを入れると、スロー時点で止まってしまい、Finallyの「Tempファイルを削除」をしてくれませんでした。Try-Catch、Throwの使い方が間違っていますでしょうか。

実際のフローを添付いたします。

【修正中】シートをコピー(同一エクセルファイル内).xaml (11.1 キロバイト)

バグなんだか、仕様なんだか、判断の苦しむ所ですが、UiPathのTry~Catchは、CatchでThrowを記載すると、Finallyは無視されるそうです。

ですので、CatchにはExceprtionを退避させ、Try~Catch以降のアクティビティで退避したExceprtionがNothingでないかを判断して、Throwさせるってのが、どこかのページで見たことがあります。

【追記】

このサイトの「というわけで対応策」って項に、JAVAでの事例とともにUiPathでの対策案も記載されていました!

5 Likes

I miss our DevCom events…
Need to poke to see when we can resume those!

4 Likes

I expect it!

HANACCHIさん
ご回答ありがとうございました。
ご紹介いただいたページで、とてもよく理解できました。
こういう仕様なのですね。。。
記載されていました対応策(例外のインスタンスを保管、FinallyでThrowする)で作成してみます。

1 Like

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