sou11
1
Try catchの使い方について十分理解ができておらず、ご教授いただけませんでしょうか。
Invoke workflowで呼び出される(または、ライブラリのアクティビティとして作成した)ワークフロー内で、一時ファイルを作成して利用しており、呼び出されたフロー内で例外が発生した場合に、一時ファイルを削除して呼び出し元に戻り、エラー(例外)になってほしいと考えております。
呼び出し元のワークフローの例外が起きる処理をTry Catchの中に入れ、FinallyでTEMPファイルを削除 とすると、一時ファイルは削除されましたが、呼び出し元のワークフローはエラーで止まってくれませんでした。
Catchのなかにスローを入れると、スロー時点で止まってしまい、Finallyの「Tempファイルを削除」をしてくれませんでした。Try-Catch、Throwの使い方が間違っていますでしょうか。
実際のフローを添付いたします。
【修正中】シートをコピー(同一エクセルファイル内).xaml (11.1 キロバイト)
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
2
バグなんだか、仕様なんだか、判断の苦しむ所ですが、UiPathのTry~Catchは、CatchでThrowを記載すると、Finallyは無視されるそうです。
ですので、CatchにはExceprtionを退避させ、Try~Catch以降のアクティビティで退避したExceprtionがNothingでないかを判断して、Throwさせるってのが、どこかのページで見たことがあります。
【追記】
このサイトの「というわけで対応策」って項に、JAVAでの事例とともにUiPathでの対策案も記載されていました!
5 Likes
qbrandon
(Quentin Brandon)
3
I miss our DevCom events…
Need to poke to see when we can resume those!
4 Likes
sou11
5
HANACCHIさん
ご回答ありがとうございました。
ご紹介いただいたページで、とてもよく理解できました。
こういう仕様なのですね。。。
記載されていました対応策(例外のインスタンスを保管、FinallyでThrowする)で作成してみます。
1 Like
system
(system)
Closed
6
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.