この記事はUiPathブログ発信チャレンジ2021サマーの14日目の記事です。
先日のFriends女子イベントでも話があがったのですが、やっぱり**『ThrowとCatchとRethrow』**の3つの役割について、何となくイメージしづらいという噂を聞きましたので、ちょっと図式で残してみようと思います!
##Throw(スロー)は、エラーを投げることです。
意図的にエラーを発生させる時に使います。エラーは「投げる」という表現をよく使いますので、ボールのようなイメージで捉えてもらうと想像しやすいかなと思います。
スローくんが、エラーを投げました! → 特に誰も間に居なければ → そのまま発生したままのエラーが表示されます。
##Catch(キャッチ)は、エラーを受け止めます。
このエラーというボール、結構、その時々で制御したい場面が出てくるんですよね。その時のために、途中で受け止める役割がキャッチくんです。
キャッチしたら、選別が出来るようになります。
スローくんが、エラーを投げました! → キャッチくんが受け止めます → 予め決めた条件で選別します。
(この図の場合はエラーとエラーにしないのパターンに分けています)
##Rethrow(リスロー)は、エラーを元の情報のまま流します
キャッチしたエラーは選別ができます。エラーとして取り扱いたい場合でも、「元のエラー情報をそのまま使いたい」というケースと「分かりやすいように改めてエラー情報を意図したものしたい」というケースが発生します。
キャッチくんは、一旦ボール(エラー情報)を止めてしまったので、再びフローにボールを流すには、何らかの「投げる」行為が必要となります。
そこで登場するのが、バレーボールのように華麗にボールをトスするリスローさんです。元のエラー情報をそのまま使いたい場合は、リスロー。改めてエラー情報を意図したものにしたい場合は、ここでもう一度、スローくんが出てきます。(このスローくんにどういうエラーにしたいか指定しないと、「不明なエラーが発生しました」という良く分からないものになります・・・)
##終わりに
こんな感じでイメージついてもらえれば、幸いです。