Slide 1

Slide 1 text

トライ キャッチの闇

Slide 2

Slide 2 text

はなっち!とは…  2020年11月 定年退職  同 年 同 月 有期契約社員  2022年7月 個人事業主化  2023年12月 相変わらず 2024年1月~ またお仕事いただけました!  はなっち!の最近 在宅で、チャーハン、焼きそば三昧! ⇒冷蔵庫の最終処分役(^^♪ ⇒自己責任飯!! !  Twitter:hjmkzk  Qiita:@HANACCHI  FaceBook:hajime.kozaki

Slide 3

Slide 3 text

トライ キャッチ

Slide 4

Slide 4 text

例外 • 条件分岐アクティビティを使って、事象を判定すれば回避できる例外 • 通常の使い方では発生しないけど、設定次第では発生する例外 • 何時、どのようなタイミングで発生するか分からない例外 ➢ データテーブルに列を追加する時に、DT.Columns.Contains(“列名”)で既に存在しているかどうか判 断できるが、「データ列を追加」だけで実装したい。 ➢ 所定フォルダ中にある、固定ファイル名のEXCELを読込み、特定シート中の、特定範囲を読み込む。 しかし、いつの間にか特定シートがなくなってしまった。 ➢ 特定シート中の、特定範囲を読み込むが、指定方法が悪い場合は、シート全体を読み込む仕様が提示 された。 ➢ 外部Webサーバからデータスクレイピングしているのだが、ネットワークが輻輳、遅延していて タイムアウトしてしまった。

Slide 5

Slide 5 text

例外拾わなくても分かる • 異常終了したら、そのダイアログが出るから、対策しなくてもいいぢゃん!! • UnAttended ライセンスによるタイムトリガー起動だと、そう言う訳にはいかない ➢ 異常終了した情報を収集し、例えば、スクリーンショットを取得するとか、異常をメールで通知 する仕組み、仕掛けを作成する。

Slide 6

Slide 6 text

こんな感じ(NORMAL) String.Join(String.Empty, 設定番号 .ToCharArray.Reverse.ToArray)

Slide 7

Slide 7 text

こんな感じ(ABNORMAL) String.Join(String.Empty, 設定番号 .ToCharArray.Reverse.ToArray) New BusinessRuleException ("DEMO EXCEPTION") 到達しない

Slide 8

Slide 8 text

こんな感じ(Try~Catch) String.Join(String.Empty, 設定番号 .ToCharArray.Reverse.ToArray) New BusinessRuleException ("DEMO EXCEPTION") 取得番号が渡されない

Slide 9

Slide 9 text

取得番号が渡されない String.Join(String.Empty, 設定番号 .ToCharArray.Reverse.ToArray) New BusinessRuleException ("DEMO EXCEPTION") INVOKE側でThrowが発行され、 設定した出力引数への返却処理が 行われていない!

Slide 10

Slide 10 text

設定した情報は返したい! • Throwする際のメッセージに、情報を載せてあげる • 出力引数のString型を止め、Dictionary型にする ➢ 例外として見せたくない情報だと、Catchした中で加工する必要がある ➢ コンストラクタを呼び出した時に、領域が確保され、データ設定が確定する(?)

Slide 11

Slide 11 text

やってみよう! String.Join(String.Empty, 設定番号 .ToCharArray.Reverse.ToArray) New BusinessRuleException ("DEMO EXCEPTION") 設定番号 & "->" & 取得番号 & "=" & 取得辞書("V").ToString

Slide 12

Slide 12 text

まとめ • Try~Catchは、 想定している例外、想定していない例外を捕捉し、 ロボットとして異常終了させない事ができる! • 親のTry~Catchで括られた子の例外も捕捉できるが、 子からの情報を戻すことは簡単ではなく、工夫が必要である ⇒Dictionary型とか、DataRow型とか... • やってやれない事はない! それが「UiPath」の楽しさよ UiPath

Slide 13

Slide 13 text

一生UiPathします How Do You Like "UiPath"?