UiPathのトライキャッチが分からない。
そんな方のために元エンジニアでRPAコンサルタントのプロコアラが、トライキャッチについて解説します。
トライキャッチを理解することで、安定した自動化処理を作れるようになります。
UiPathが推奨しているテンプレートであるReFramework(Robotic Enterprise Framework)でも多用されていますので、理解する第一歩でもあります。
トライキャッチとは?
トライキャッチは、エラーが発生する可能性がある箇所に、前もって例外が発生した際の処理を書いておきどのようにエラーを取り扱うか決めることができます。
UiPathの例外(エラー)について理解できていない方は、こちらを先にご覧ください。
トライキャッチはプログラミングの用語でJavaなど多くのプログラミング言語で使われています。
UiPathをはじめとして、多くのツールでドラッグ&ドロップで処理を組むことができるため、プログラミングという意識は低くなりますが、RPAはプログラミングだと考えています。
If文(条件分岐)や、For文(繰り返し)などがありますしね。
よって、トライキャッチがあっても不思議では無いのです。
トライキャッチの構成
トライキャッチは3つで構成されます。
・Try
・Catches(Catch)
・Finally
Try
Tryには、エラーが発生する可能性のある処理を入れます。
例えば、ファイルを読み込む場合など、ファイルが存在しない可能性があるためトライキャッチを使用します。
Catches(Catch)
Catchesには、エラーが発生した際に行う処理を追加できます。
・エラーを握りつぶす。
・エラー発生時、代替処理でリトライ
などなど、色々な方法でエラーを取り扱うことができます。
Finally
Finallyには、トライキャッチで必ず実行される処理を書きます。
つまりエラーが発生する場合、しない場合にもFinallyの処理は実行されます。
エラー発生時:Try→Catches→Finally
エラー未発生時:Try→Finally
トライキャッチで指定できる例外の種類
トライキャッチでは、Catchesに例外発生時の処理を追加できます。
便利な点は、エラーの種類によって処理を分けることができるわけです。
Exceptionに指定できる例外の種類は多数あります。
コンボボックスから選択できるものを中心に解説します。
・System.ArgumentException
・System.NullReferenceException
・System.IO.IOException
・System.InvalidOperationException
・System.Exception
・その他多数
System.ArgumentException
Argumentは引数のことを指します。
指定した引数が無効な場合にこのエラーとなります。
例えば、「ワークフローファイルを呼び出し」アクティビティでXamlを呼び出す際に引数が無効の場合などが挙げられます。
System.NullReferenceException
参照先が見つからない、あるいは参照先が対象範囲外の場合に、このエラーが発生します。
例えば、Excelで数値が入っていることを期待しているセルが空欄であり、その値を使って計算した場合に発生します。
System.IO.IOException
ファイルやディレクトリの入力/出力の際にエラーとなった場合にエラーとなります。
例えば、ファイル読み取りや書き込みを行う場合に、競合して開けない場合に発生します。
System.InvalidOperationException
引数が無効以外の理由で処理が呼び出せなかった場合に発生するエラーです。
System.Exception
System.Exceptionはエラーの種類に関係なく例外発生時の処理を追加したい場合に指定します。
その他
型の参照をクリックすると詳細にExceptionを指定することができます。
xxxExceptionとあるものが例外の種類ですが、ここでは説明しません。
基本的には、以下の2つだと思います。
・System.Exceptionで種類関係なく処理する。
・BusinessRuleExceptionとApplicationExceptionで分けて処理する。
ビジネス例外とアプリケーションについて分からない方は、こちらをご覧ください。
トライキャッチを実際に動かして検証
UiPathではトライキャッチがアクティビティとして用意されているため、簡単にトライキャッチを作ることができます。
トライキャッチについて挙動を確認するワークフローを作りました。
実際にさわってみたい方は、プロコアラのGithubリポジトリから取得してください。
Try処理では、ユーザーが選択した例外をスローアクティビティで発生させます。
スローアクティビティでは以下のようにして、例外を発生させます。
カッコ内の文字列は、exceptionの文字列で取得することが可能です。
Catches部では、例外毎に処理を分けるようにしています。
これは、今回のトライキャッチの動作を検証するためという理由からです。
通常はSystem.Exceptionで例外が発生した場合の処理を実装していく方法が多いです。
発生した例外の情報は例外ハンドラーを使用すると、より詳細な情報が取得できます。
個別にログを出力後に例外を再スローするようにして、どの例外が発生したか分かるようにしています。
再スローとはキャッチに来た例外を再び発生させる処理で再スローしないと発生した例外を握りつぶしてなかったことにします。
ちなみに再スローしないとどうなるか検証するため、InvalidOperationException例外発生時は再スローしないようにしています。
例外未発生時の動作
Tryの後にFinallyが実行されています。Finallyは例外発生有無にかかわらず実行されるんでしたね。
System.Exception発生時
Try処理の後に例外が発生して再スルーしているため、例外発生して処理が止まります。
再スローすると、Finally処理は実行されないのです。
System.ArgumentException、System.NullReferenceException、System.IO.IOExceptionは同様の動きのため割愛します。
System.InvalidOperationException
再スロー処理を行わないようにしたInvalidOperationExceptionはのログを見てみましょう。再スローしていないため、例外が発生していません。そしてFinally処理が実行されています。
最後に
今回はトライキャッチについて解説しました。
UiPathでは、例外発生時の処理を定義できるため信頼性の高い自動化処理を作ることができます。トライキャッチを使いこなしてよい自動化ライフを満喫してください。
トライキャッチやエラーハンドリングを実践形式で作りながら学びたいかたは、こちらのUdemyコースをチェックしてみてください。保守しやすい安定したワークフローの作り方を習得できます。
こちらのリンクから飛んでいただくと、お得な割引クーポン価格で受講できます。
RPA、UiPathについて動画形式で学べるコアワカのUdemy講座を
いつでもお得な価格で受講できるクーポンを発行しています。
研修にも使用できる書籍もこちらから購入が可能です。
動画を受講したい場合はボタンをクリックしてください。
クーポンコードが適用されたUdemyコースのリンク一覧ページに移動します。