Try CatchアクティビティのBug?

こんばんは。UiPath Studio EnterPrise Edition 23.10.1版を利用中の初心者です。

Main.xamlから呼び出したサブルーチンProcess.xamlで発生したビジネス例外をMain.xamlのTry CatchでCatchして、Catch Blockからサブルーチンで呼び出したErrorHandler.xamlでエラーログを書くWFを作成していますが、サブルーチンProcess.xamlでthrowしたビジネス例外をMain.xamlのMaTry CatchでCatchした際に、System.Exception型変数の値がNullになっていることを確認しました。

併せて、サブルーチンProcess.xamlで"True"に設定したBoolean型引数もMain.xamlのTry CatchでCatchした際に、値がNullになっていることを確認しました。
これはUiPathのTry CatchアクティビティのBugではないかと職場の上司は話していましたが、有識者の方、この推測が正しいかどうか、コメントをお願いします。

例外でそのワークフロー抜ける際にProcess.xamlの引数でMain.xaml側に値を受け取ろうとしていますか?
そうであれば、例外終了時は値が渡されませんので、上記は仕様通りの正常動作です。

やりたいことは、Process.xamlのthrowアクティビティの
New BusinessRuleException(“エラーメッセージ”)
の"エラーメッセージ"をエラーログに出力することです。

実現手段としては、下記のいずれかでしょうか。

案1.Process.xamlでビジネス例外をthrowした場合、Main.xamlにSystem.Exception型引数を渡さないで、Main.xamlの
System.Exception型変数に自動的に値が設定されるのを待てば良いのでしょうか?
案2.やや強引ですが、Process.xamlで"エラーメッセージ"をString引数に代入して、Main.xaml経由で、ErrorHandler.xamlでLog Messageアクティビティに渡す。

もし以下のようになっているのであれば、Process.xaml内でthrowされた例外は、下記のcatch内のexception変数に自動的に設定されます。(Process.xamlを例外として抜ける場合)

image

私案で言うと、案1ですね。Process.xamlで設定したBoolean引数の値がMain.xamlに引き継がれなかった理由は分かりますでしょうか?

仕様です。例外で抜けた場合、引数の値は渡されません。

ご教示ありがとうございます。
ついでに2点教えてください。
1.Main.xamlからErrorHandler.xamlを呼び出す際の引数i_exec_SystemExceptionの向きは入力ですよね?(画像参照)

2.ErrorHandler.xamlでLog Messageアクティビティを実行する際、
i_exec_SystemException.Sourceをログに出力すると、ビジネス例外をthrowしたProcess.xamlがそのまま入るという認識で正しいでしょうか?

1.Errorhandler.xamlからみて入力になるのであれば、入力で問題ありません。
基本的にはInvokeworkflowFileアクティビティからは、変更しない方が良いと思います。

2.Main.xamlでexception.Sourceがそのように出ているのであれば、そうなると思います。
(内容はバージョンや構成に依存するように思えます。)

>基本的にはInvokeworkflowFileアクティビティからは、変更しない方が良いと思います。

目的語がよく分かりません。何を変更しない方が良いのでしょうか?

バージョンはUiPath Studio 23.10.1ですし、構成はお伝えしていると思います、それでも確定できませんか?

上記画像にある、InvokwWorkflowFileアクティビティの引数をインポートで表示されるダイアログの「Direction」です。

バージョンはUiPath Studio 23.10.1ですし、構成はお伝えしていると思います、それでも確定できませんか?

手元に実際のソースや環境があるわけではありませんし、上記だけでは実際の構造はわかりませんので、お手元の環境で実際に試した方が早いと思います。

1 Like