Catch Blockの例外処理について

会社で標準フレームワークを作成して、そのフレームワークをベースに様々なワークフローを作成しています。
例外処理につき2点質問をさせてください。
1.その標準フレームワークの初期設定で、設定.xlsxが指定のフォルダに存在しない場合、ワークフロー終了アクティビティでNew BusinessRuleExceptionで例外を発生させて、Main.xamlのCatch BlockのExceptionで例外処理を引き受けていることが分かりました。
New BusinessRuleExceptionで例外を発生させたのだから、Main.xamlのCatch BlockのBusinessRuleExceptonで例外処理を引き受けるべき気がしますが、Exceptionで例外処理を引き受けても問題はありませんか?一応動作はしているようですが。

2.Try CatchアクティビティのCatch Blockには、Exceptionの他に、BusinessRuleException、FileNotFoundExceptionなど様々なExceptionがあります。設定.xlsxが指定のフォルダに存在しない場合は、ファイルが存在しないのだから、FileNotFoundExceptionが正解ではないのかと考えたりもします。今回の場合は、BusinessRuleException,FileNotFoundExceptionのどちらを使っても良いのでしょうか?

@gorby

To clear the details first…

Catch blocks can be specific or generalized…

That means say a filenotfoundexception occurs then if catch block is written for system.Exception it catches this exception as well

The same exception can be caught by specific exception like filenotfoundexception in catch block…

So the difference is…exception will catch all kinds of exceptions where as the later will catch only the filenotfound exception

And the order of catch block is also important if exception type is written first and then a specific exception is given like filenotfound then the general exception catches it …so we have to make sure to give a general exception at end and specific exceptions first …

Catch blocks order is important

Hope this helps

Cheers

「特定の例外クラス(例えば BusinessRuleException)ごとに固有の例外処理を実施させる」などの要件がなければ、Exceptionで受けることは問題ないと思います。

Exception と表現されているものは、正確には System.Exception かと思いますが、このクラスはすべての例外クラスの派生元( @gorby さんが以前ご質問されていた Object型 のような、型の構造の基礎と扱われるもの)になっています。BusinessRuleExceptionも、FileNotFoundExceptionも、いわゆる例外クラスはすべて System.Exception と同じ性質を持っていると(.NETの世界では)扱われます。
このような仕様になっているため、特定の例外クラスをキャッチするよう指定されていない場合には、System.Exception でキャッチするように指定することで、すべての例外をキャッチできるようになります。

技術的には、スロー アクティビティにおいてどのような例外クラスを使用して例外を発生させるかは、開発者が任意に選択できます。「例外クラスの名称から例外内容がわかること」が一般的な理想かとは思いますが、それが UiPath の開発において厳密にルールとされているわけではありません。
つまるところ、ご質問の対象たるフレームワークの作成者が「どのような意図で」BusinessRuleExceptionとして実装しているのか、という思想が元となるかと思いますので、直接作成された方に確認いただくべきかと思います。
もしかすると作成者が「例外クラス = BusinessRuleException である」という認識を持たれているかもしれませんし、あるいは「設定ファイルの配置はビジネスルールだから、それが配置されていないことはビジネスルールに対する例外である」という認識を持たれているかもしれません。そのどちらか(あるいはどちらでもないか)は、作成者ではない私たちには関知できません。

こんにちは

New BusinessRuleExceptionで例外を発生させたのだから、Main.xamlのCatch BlockのBusinessRuleExceptonで例外処理を引き受けるべき気がしますが、Exceptionで例外処理を引き受けても問題はありませんか?

BusinessRuleExecptionはExceptionのサブクラスなので、技術的にはExceptionで捕捉できます。
実際の対応動作も両者で同じなら、まとめてExceptionで受けても問題ないと思います。

今回の場合は、BusinessRuleException,FileNotFoundExceptionのどちらを使っても良いのでしょうか?

ビジネス例外を使うべきかどうかは、その時の意味合いによります。
例えば、ユーザーが事前に置くべき設定ファイルを置き忘れたようなケースはビジネス例外になると思いますし、サーバー負荷などでファイルのダウンロードに失敗した場合はビジネス例外には該当しないと思います。
UiPathでこれらを使い分けているのは、特にリトライの可能性を識別するための目的が多いです。
これは例えば、システム不安定が原因の場合、リトライによってリカバリーできる可能性があることに対して、ビジネスルール例外は、基本的にデータ起因によるものですので、リトライしてもリカバリーできることはなく、即時次のレコード処理に移るようなケースで使います。
ReFramework Templateでも初期化ステートでは、ビジネスルール例外は使用しておらず、例外はすべて終了処理に移っていますので、上記のケースもどちらでもよいように思えます。