kao
1
お世話になります。
作成したいフローがあります。
・TryCatchの中に繰り返し処理を配置する
・予期せぬエラーが発生した際に処理を中止 →Catch内の例外処理を実行して終了する
・事象Aが発生した時だけはそこでフローを中止し、Catch内の例外処理も行わない
または事象AによってThrowされた例外の場合は、
その他の例外やエラーとは違う処理をCatch内で行う。
フローチャートは下図の通りですが、
現時点では、ある事象A(黄色枠)が発生した際にもCatch内の例外処理を行ってしまいます。
(黄色枠にThrowを配置しているため)
黄色枠に進んだ場合はそこで処理を中止し、
Catch内の処理を実行せずに終わる方法はありますか。
あるいは黄色枠内のThrowによってCatchに進んだ時は、
それ用の例外処理を行うようにCatch内に設定できるでしょうか。
Catch内には例外の種類に応じて対応するアクティビティを配置できることは知識としてあるのですが、
黄色枠の例外の種類をどのように設定し、
Catch内ではどのようにアクティビティを配置すればよいかがわかりません。
ご教示いただけますと幸いです。
よろしくお願いします。
Yoichi
(Yoichi)
2
こんにちは
基本的には、その例外の内容にそった例外をスローします。そのため上記からだけでは判断ができません。
不明であれば取り急ぎ
New Exception("特定事象のメッセージ")
としておいて
Catch内ではどのようにアクティビティを配置すればよいかがわかりません。
CatchのSystem.Exceptionのブロックで内の条件分岐で
exception.Message="特定事象のメッセージ"
とすればそれ用の処理ができるかと思います。
kao
3
Yoichi様
ご教示ありがとうございます。
基本的には、その例外の内容にそった例外をスローします。そのため上記からだけでは判断ができません。
TerminalSessionの中で処理をするフローを作成しています。
画面移動後には正しい画面に移動したかどうかを確認し、
意図しない画面に移動してしまった場合だけ区別して処理を行いたいです。
この場合はどのような例外をスローするのが正しいでしょうか。
取り急ぎご教示いただいた通り、以下のように設定してみました。
New Exception(“画面遷移エラー発生”)
Catchには条件分岐を配置
If exception.Message=“画面遷移エラー発生”
Then (画面遷移エラー発生時の処理)
Else (その他のエラー発生時の処理)
Yoichi
(Yoichi)
4
こんにちは
意図しない画面への遷移の原因が明確なら、その原因をThrowすればよいかと思いますが、明確ではないなら一旦上記のようなExceptionをTHrowしておいて、Messageによる振り分けでも良いように思います。