Blue Prismで例外処理を扱う(超入門)
あらゆる業務には例外処理がつきものです。
これはRPAだろうが何だろうが一緒です。自動化の仕組みの良し悪しは、例外処理の巧拙で決まる…といっても過言ではないと思います。
…しかし同時に、例外処理って、わかりにくいイメージがありますよね。
私もかつてJava技術者(戦闘力的には、ショッカーの戦闘員並みだったけど。。)だった時期がありますが、正直、例外処理ってわかりにくいな、考えるの面倒だな、と思っていました。
キャッチできるとかキャッチできないとか、ビジネス例外だとかシステム例外だとか、いろいろややこしかったので。。
重要だけどややこしい、ややこしいけど重要だ…例外処理は、Blue Prismにおいても(残念ながら?)避けては通れない考え方です。
超入門の位置づけで、まずは軽く整理したいと思います。
超基本形① ThrowとCatch
まずは超基本形で、例外を発生させ、それをキャッチしてみます。
Blue Prismでは以下のようになります。
あくまで私見ですが、例外ステージが、JavaでいうThrowだと思えばよさそうです。Throwする例外も、既存から選択または新規定義が可能です。
Catchにあたるのが、復元ステージと再開ステージのようです。両者の違いは開始と終了ですね。
超基本形② Catch節の定義
復元ステージと再開ステージの間は、例外処理が可能な状態として扱われます(リカバリーセクション)。
発生した例外の型や発生場所、詳細情報を取り出せます。
超基本形③ Try-Catch
ブロックステージを使うと、JavaでいうTry-Catchも定義できます。
ブロックステージで囲むと、Try節で囲ったことになり、ブロックステージの中の復元ステージが(Try節に対する)Catchの開始となります。
超基本形④ 例外の種類に応じて、処理を分岐させる
以上を組み合わせると、以下のように、Try節の中で発生した例外の種類に応じて、処理内容を変えることができるようになります。
動かしてみる
以下のような動きになります。
- ブロックステージの中で例外(Sample)を発生させます
- ブロックステージの中で例外が捕捉されますが、例外の種類がSystem Exceptionでないとブロックステージを抜けられないようになっています
- 例外の種類がSystem Exceptionでない場合、System Exceptionを改めてThrowし、再度、ブロックステージの中で捕捉されます
- 例外の種類がSystem Exceptionなので、ブロックステージを抜けます
やったぜ。
まとめ
例外処理は重要ですが、ややこしい概念です…つまり、業務的には必須の処理です。
Blue Prismは、例外処理をJavaと似た形で、画面(GUI)でグラフィカルに定義可能です。
復元ステージと再開ステージ(つまり、Catch節の始点と終点)はセットで考えておくべきです。再開ステージで閉じずに、例外ステージで再Throwすると上位の復元ステージに飛ばされてしまいます。
なんかJavaとBlue Prismが混ざった記事になってしまった。。