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】ExceptionのDataプロパティを使って標準メッセージ以外の情報を持たせる

Posted at

はじめに:エラーと引数について

UiPathでは、呼び出し先のワークフロー内で処理途中にエラーが発生した場合、エラー発生前にOut方向の値型引数に値を設定していても、その値は呼び出し元のワークフローには渡されません。(参照型など一部の例外はあります。)

このため、エラー発生時に呼び出し元へ情報を渡すにはExceptionオブジェクトに頼る場面が多くなります。ExceptionMessageプロパティを使うのも有効ですが、こちらには規定のエラー情報も入るため、あまり変更したくないところではあります。そこで使われるのが、ExceptionDataプロパティです。

ExceptionのDataプロパティ

ExceptionDataプロパティはIDictionary型のコレクションで、Exception生成時に自動的に作られます。その中には自由に値を追加することができ、エラーの詳細などを柔軟に呼び出し元へ伝える手段として活用できます。

実装例

以下は実装例です。「True か確認」で発生したエラーをTryCatchで一度キャッチし、ExceptionDataプロパティにキーと値を設定し、再度スロー(再スロー)しています。ここではキーに「Detail」、値に「"エラーの詳細です。"」を設定していますが、キー・値どちらも任意のものを設定することが可能です。

image.png

以下は上記のワークフローを呼び出すワークフローです。呼び出し先で発生したエラーをキャッチし、Exceptionのメッセージと、Dataプロパティの「Detail」キーの値をログに出力しています。

image.png

実行結果が以下のログです。エラーメッセージとは別に、Data プロパティに設定した「Detail」の内容が出力されていることが確認できます。

image.png

Data プロパティにキーが設定されていない場合にも備える

Data プロパティに指定したキーが存在しない場合、その値を参照しようとするとエラーになる可能性があります。これを防ぐために、以下のように is Nothing を使ってキーの存在をチェックし、未設定の場合はメッセージを表示しないなどの対応が有効です。

image.png

キーは出来るだけ固定に

実際の運用上では、同じワークフロー内で複数のキーを使い分けると、管理が煩雑になりやすいという課題があります。たとえば、エラーの種類ごとに "ValidationError"、"TimeoutInfo"、"UserContext" など異なるキーを設定してしまうと、呼び出し元でどのキーが設定されているかを毎回確認する必要があり、キーの存在チェックやログ出力の条件分岐が複雑になる等の問題が発生します。
そこで、キーは基本的に固定し、値の中身を状況に応じて柔軟に変更するという運用が効果的です。 この方法なら、呼び出し元では今回の例で言えば常に "Detail" キーを参照すればよく、コードの見通しが良くなり、保守性も向上します。

動作環境

  • UiPath.System.Activities v25.6.1

参考

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?