gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 8:50am
1
こんにちは
UiPath Studio 2025.0.161 community editionのユーザです。
下記の仕様の、他人が作成したグローバル例外ハンドラーのサンプルコードを実行してみました。
仕様:InputDialogで「ビジネス例外」と「アプリケーション例外」の選択メニューが表示され、
前者を選択すると、Main.xamlにて「ビジネス例外」をThrowし、グローバルハンドラー.xamlにて「ビジネス例外」に対応した処理が、後者を選択すると、Main.xamlにて「アプリケーション例外」
が発生し、グローバルハンドラー.xamlにて「アプリケーション例外」に対応した処理が実行される。
3点ご教示ください。
1.グローバルハンドラー.xamlにRetryというint32型変数があり、初期値は0です。
グローバルハンドラー.xamlに
errorInfo.RetryCount < 3
という構文があることから、リトライ回数をこれで決めているのかと思いましたが、
変数Retryの初期値を,0から5に変えてみましたが、リトライ回数は4回と変わりませんでした。
Retryは何をしているのでしょうか?
2.errorInfo.RetryCount < 3の構文で実行されるリトライ回数は4回と決まっているのでしょうか?ログを見るとそう見えます。
3.ビジネス例外を発生させたところ、ログを見ると4回ErrorHandler.xamlを呼び出していますが、グローバルハンドラー.xamlのアルゴリズムでは、1回ErrorHandler.xamlを呼んでワークフロー終了するはずです。分かりにくいですが、グローバルハンドラーではビジネス例外も、アプリケーション例外も4回エラー処理を繰り返す仕様なのでしょうか。
プロジェクトをUpします。
グローバル例外ハンドラサンプル2.zip (240.4 KB)
@gorby
For your first question,
Check for which variable you are changing the value,
in expression there Retry Count if you changed to Retry variable it wont effect
For your second question there is no any fixed retried but ideally it will be better to follow three times. based on your requirement
Happy Automation!!
gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 9:06am
3
Yedukondalu_aregala:
For your second question
Does the syntax errorInfo.RetryCount < 3 determine the number of retry attempts as 4? Looking at the logs, it seems that way.
Yoichi
(Yoichi)
March 31, 2025, 9:07am
4
上記で共有されているプロジェクトファイルは、以下のトピックで共有されていたものと同じようなので、上記の実行結果とは異なるプロジェクトではないでしょうか?
こんにちは
UiPath Studio 2025.0.161 community editionのユーザです。
下記の仕様の、他人が作成したグローバル例外ハンドラーのサンプルコードを実行してみました。
仕様:InputDialogで「ビジネス例外」と「アプリケーション例外」の選択メニューが表示され、
前者を選択すると、Main.xamlにて「ビジネス例外」をThrowし、グローバルハンドラー.xamlにて「ビジネス例外」に対応した処理が、後者を選択すると、Main.xamlにて「アプリケーション例外」が発生し、グローバルハンドラー.xamlにて「アプリケーション例外」に対応した処理が実行される。
ところが、実行証跡で確認すると、InputDialogで「ビジネス例外」と「アプリケーション例外」のいずれを選択しても、グローバルハンドラー.xamlに処理が渡りません。
詳しい方デバッグをお願いします。
gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 9:11am
5
失礼しました。添付プロジェクトを下記に差し替えました。ご確認下さい。
グローバル例外ハンドラサンプル2.zip
I can’t read your workflow due to language,
but make sure one thing where that condition is placed and make a note execution retry will start with 0,1,2,3 total is 4 retries
Yoichi
(Yoichi)
March 31, 2025, 9:18am
7
うまくアップできていないようです。ご確認お願いします。
gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 9:22am
8
最初の投稿にUpしましたが、こちらにも同じプロジェクトをUpします。
グローバル例外ハンドラサンプル2.zip (240.4 KB)
Yoichi
(Yoichi)
March 31, 2025, 9:35am
9
この認識が誤っています。
resultがErrorAction.Continueなので、GlobalHandlerを抜けると再び例外がスローされます。
これが各シーケンスを抜けるたびに繰り返えされるため、複数回GlobalHandlerが呼び出されることになります。
The UiPath Documentation Portal - the home of all our valuable information. Find here everything you need to guide you in your automation journey in the UiPath ecosystem, from complex installation guides to quick tutorials, to practical business...
Yoichi
(Yoichi)
March 31, 2025, 9:43am
10
変数定義以外でどこにも使用されていないので、何ら影響しないと思います。
2.errorInfo.RetryCount < 3の構文で実行されるリトライ回数は4回と決まっているのでしょうか?ログを見るとそう見えます。
リトライとしては3回かと思います。→そのため4回例外が発生しています。
リテラルの3がハードコーディングされていますので、ReteryCountが3になったときにErrorHandling_Terminateに流れると思われます。
gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 9:55am
11
明示的にresult=ErrorAction.Continueなどと書いていないので、どうしてそうなるか分かりませんが、それではどう書けば、ビジネス例外処理を1回で済ますことができますか?
gorby
(Noteworthy UiPath Forum contributer 2024)
March 31, 2025, 10:31am
12
分からないのは、
errorInfo.RetryCount < 3
は条件分岐のElse側に記載しているのに、Then側に記載したビジネス例外にもその影響が及んでいることです。ビジネス例外のエラー処理が1回で済むような記載は可能でしょうか?
Yes, you can segregate them based on exception type,
for that you need to one thing, you need store the exception into two variables.
If it is System exception store it in systemExceptionVariable, if it is Business exception then use another variable was BusinessexceptionVariable, here check business exception variable is nulll if it not null go to Business exception flow,
same like System exception as well
Please mark solution if you find the solution.
Happy Automation!!
Yoichi
(Yoichi)
March 31, 2025, 1:10pm
14
どこからこのコードを持ってきたかは存じませんが、デフォルト値に頼るかつコメントもない書き方が不親切なのだと思います。
それではどう書けば、ビジネス例外処理を1回で済ますことができますか?
例えば、公式ドキュメントにある通り、ErrorAction.Abortになるかと思います。
分からないのは、
errorInfo.RetryCount < 3
は条件分岐のElse側に記載しているのに、Then側に記載したビジネス例外にもその影響が及んでいることです。ビジネス例外のエラー処理が1回で済むような記載は可能でしょうか?
及んでいません。Step-Inやアクティビティログを機能を使えば、どのルートを通ているかは把握できますので、それを行った方が良いかと思います。
前述しましたが、ビジネス例外時に複数回GlobalHandlerが実行される理由は、ErrorAction.Continueによる再スローであり、errorInfo.RetryCountとは無関係です。