gorby
(Noteworthy UiPath Forum contributer 2024)
1
こんにちは。
UiPath UiPath Studio Community Edition 2024.2.1ユーザです。
System.Exception型変数の存在意義について教えてください。
Try CatchアクティビティのCatch BlockでExceptionフィールドを作成するため、System.Exception型例外の考え方が必要なことは理解しますが、開発者としてSystem.Exception型変数の存在意義がよく分かりません。
System.Exception型変数の存在意義を明快に説明できる方、ご教示ください。
このような疑問を抱いた理由は下記の2つです。
1.例外情報を扱うTry Catchアクティビティでは、System.Exception型変数をプログラマが明示的に定義しなくても、Try Blockで発生した例外はCatch Blockで自動的にキャッチして処理される。
2.添付の図をご覧ください。Try CatchアクティビティのCatch Blockに定義されたTimeoutExceptionフィールドで例外情報exec_SystemExceptionに値を設定して、Try Catchを抜けたあとにこの値を見て条件分岐で処理が行われるが、この操作は例えば、Boolean型変数にTrueを設定したり、int32型変数に”1”などを設定してTry Catchを抜けた後に条件分岐すれば他の変数でも代替可能。
Yoichi
(Yoichi)
2
こんにちは
これはご自身がどのようなロジックを組むかに依存しますので、普遍的な答えはないと思いますが...
Catchブロックでこのexceptionインスタンスを使用したい場合は別で変数を定義する必要があります。
逆に言うとCatchブロック内でのみしかこの情報を使わないのであれば不要です。
2.添付の図をご覧ください。Try CatchアクティビティのCatch Blockに定義されたTimeoutExceptionフィールドで例外情報exec_SystemExceptionに値を設定して、Try Catchを抜けたあとにこの値を見て条件分岐で処理が行われるが、この例外情報はSystem.Exception型以外の、Boolean型やint32型など他の型の変数でも代替可能。
代替可能ならexception型の変数は不要です。
一般的に他の変数で例外の情報を抽出するということは、欠落する情報もあることを意味しており、例えば後続で例外の共通処理を行う場合等には不都合となるケースがあるからです。
gorby
(Noteworthy UiPath Forum contributer 2024)
3
いつもお世話になっております。申し訳ありませんが、具体的なイメージが湧きませんので、サンプルコードで示していただけないでしょうか。
Yoichi
(Yoichi)
4
すみません、言葉が一つ抜けていました。以下が正です。
Catchブロック外でこのexceptionインスタンスを使用したい場合は別で変数を定義する必要があります。
gorby
(Noteworthy UiPath Forum contributer 2024)
5
例外情報とは有無のゼロイチの情報しかないと思っていました。欠落する情報とは具体的にどのような情報でしょうか。
Yoichi
(Yoichi)
6
たとえばexception型のインスタンスは以下のような情報を保持しています。Int32やString変数一つでは基本的にはすべてを保持することは出来ません。(別の次元の話でシリアライズ等の方法はありますが)
system
(system)
Closed
7
This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.