【UiPath】「エラー処理の重要性と実装方法」を理解する【初心者】
UiPathの学習追体験記事です。
※あくまで学習中の脳内を記事にしたものなので、この記事で書かれてあることが”正しい”とは限りません。
参考:学習効率本5巻 「知識の自作」

0.動機

「UiPath RPA アソシエイト資格試験」を受けたい!
と思い、練習問題のプラクティステストを受けてみたが、正答率は半分にも満たなかった。徹底的にプラクティステストの復習をするしかない!
ということで、本記事では、プラクティステストで間違えた問題の復習の様子を書きつらねていきます。
まずは、間違えた問題の紹介。
ベストプラクティスによると、1つの自動化プロジェクトにはいくつのグローバル例外ハンドラーを設定できますか。
引用元:https://www.pearsonvue.co.jp/uipath
UiPath RPA アソシエイト資格試験 プラクティステスト
解説部分には、この問題で求めている知識が紹介されていた。内容は以下。※答えは明示されてない
トピック:エラー処理の重要性とその実装方法を説明する。
引用元:https://www.pearsonvue.co.jp/uipath
UiPath RPA アソシエイト資格試験 プラクティステスト

エラー処理かぁ~。そもそも、エラーした後のことなんて考えたことなかったな。難しそうだ。
では、以下から、「エラー処理」の復習をしていく。
1.座学
書籍やネットの情報をもとに学習
検索
理解する対象に関する情報を書籍やネットで調べる。
今回の理解の対象である「エラー処理」については、UiPathアカデミーの以下の階層にあった。
UiPathアカデミー>UiPath Studio開発 中級コース>レッスン一覧>エラーと例外処理
では、「エラー」関連の説明文を見てみる。
エラー処理
予期できるエラーに対して、エラーの種類に応じたエラー処理を実装し、エラーによる処理停止を避けるように構成します
引用元:https://academy.uipath.com/jp/learningpath-viewer/1955/1/153411/16
例外処理
「エラーの種類に応じたエラー処理に制御を移す仕組み」を例外処理といい
実装することにより、より安定したワークフローとなります引用元:https://academy.uipath.com/jp/learningpath-viewer/1955/1/153411/16

エラーって単語は日常でもよく聞くけど、「エラー処理」や「例外処理」はあまり聞いたことないな。
なんとなくのイメージだけど、「エラー処理」の監督者が「例外処理」みたいなものかな。知らんけど。
吟味
「エラー処理」「例外処理」の説明文を軸に考えを膨らませる。
エラー処理

「エラーa」に対しては「エラー処理A」が、「エラーb」に対しては「エラー処理B」が担当みたいな。

「エラー処理に制御を移す仕組み」とある。ってことは、以下みたいな感じかな。
エラー→例外処理:エラーを処理しますか?→処理する→エラー処理
上記のように進むとすると、例外処理専用アクティビティの中にエラー処理が含まれるってことになりそう。
・メタファーで考える
メタファーとは、
メタファー(隠喩)とは、あることを表現するのに際して、他のものを喩えとして借りて示すこと
引用元:知識創造の方法論(書籍)
https://amzn.to/37aXQaj
「エラー処理」と「例外処理」をメタファーを利用して、それぞれの機能を予想してみる。

「エラー」って単語はよく聞くよね。例えば、野球。味方の野手がゴロやフライを落としたら、「エラー」と言われる。
エラー処理と例外処理を「野球」で喩えてみる。
エラー処理は、野球で言うところのエラー後の行動、すぐにボールを拾うなど。
例外処理は、「ファールゾーンならエラー後はなにもしなくていい。」一方、「フェアゾーンならすぐにボールを拾う」などの設定。

ふむふむ、例外処理はエラー処理の”発生条件”を決める機能なのかも。
ここまでの、「エラー処理」と「例外処理」の機能の予想をまとめる。
エラー処理
・エラー処理には種類がある
例外処理
・エラー処理の発生条件を決める機能がある
・エラー処理を行う前に発生する処理
・エラー処理をまとめるアクティビティ
2.実践
実際に手を動かすことで理解を深める。
エラーを処理する
意図的にエラーを発生させて、処理してみる。
・エラーを発生させる
まずは、エラーを発生させる。
Excelから読み込んだデータの型と格納する変数の型が合っていないことで、エラーを発生させる。
上記画像のようなワークフローを作成。Excelからのデータを格納する変数(Cell)の型をStringに設定。
読み込むデータは「123」というDouble型のデータ。
よって、格納する変数の型と異なるデータ型を扱うため、エラーが発生する。
エラーダイアログが表示された。

うんうん、これでエラーが発生して、止まっちゃうんだよね。エラー処理を行うと、そのまま次のアクティビティの実行に移動するのかな。

エラーダイアログに「例外の型」って書かれてある。例外にも型がある。もしかして、これが、「エラーの種類」みたいなものじゃないかな。
・エラーを処理する
エラーの処理方法を下記の書籍から調べてみた。とりあえず、「トライキャッチ」アクティビティを使うと良いらしい。

「トライキャッチ」アクティビティを配置し、その中にエラーが発生するアクティビティ(セルを読み込み)を置いた。
a.処理を行うアクティビティ
b.エラー発生後に行う処理

ふむふむ、これで、Tryフィールドにあるアクティビティがエラーとなった場合に、Catchesフィールドのアクティビティが実行されるってことだね。
実行。
Catchesフィールドのアクティビティが実行された。
その後、「トライキャッチ」アクティビティの次に配置されてあるアクティビティが実行された。

「トライキャッチ」アクティビティでうまく処理できれば、それ以降のアクティビティも実行できるみたいだ。

Catchesフィールドを編集する際、「例外の型」を選択する場面があった。エラーダイアログに表示された「例外の型」を当てはめるとどうなるのだろう。
トライキャッチのCatchesフィールドの2つ目を設定する。
Catchesフィールドの2つ目に、エラーダイアログで表示された例外の型「System.NotSupportedException」を設定してみた。

どっちの処理が優先されるのだろう。もしくは、上から順番に実行されるのかも。
実行。
Catchesフィールドの2つ目(例外の型「System.NotSupportedException」)のみ実行された。

例外の型を合わせたものが、優先的に実行されるルールなのかな。

ん、そもそも、Catchesフィールドの1つ目に設定した例外の型は、いったいなにもの?
例外の型が合っていないのに、処理できちゃったけど、、
「System.Exception」について調べてみた。

「System.Exception」は、すべての例外を認識できる型のようだ。

「例外の型」の万能マンってことだね。
エラーを処理できたため、一旦、この段階でセーブ。
3.まとめ
ここまでで分かったことをまとめる。
・エラーの出るアクティビティは「トライキャッチ」アクティビティの中に配置することで対応できる
・例外にも型がある
・「System.Exception」は、すべての例外を認識できる型

4.疑問
今回の学習で若干気になることがあったので書き留める。
疑問
エラー処理と例外処理の区別が分からない。自分が思っていた「エラー」が「例外」と記載されていたり、「エラーの型」となりそうなところが「例外の型」と書かれてあったりと、「エラー」と「例外」の区別がまったくつかない。
コメント