11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ThrowとCatchとRethrowの違い

Last updated at Posted at 2021-07-14

この記事はUiPathブログ発信チャレンジ2021サマーの14日目の記事です。

先日のFriends女子イベントでも話があがったのですが、やっぱり**『ThrowとCatchとRethrow』**の3つの役割について、何となくイメージしづらいという噂を聞きましたので、ちょっと図式で残してみようと思います!

##Throw(スロー)は、エラーを投げることです。
意図的にエラーを発生させる時に使います。エラーは「投げる」という表現をよく使いますので、ボールのようなイメージで捉えてもらうと想像しやすいかなと思います。

スローくんが、エラーを投げました! → 特に誰も間に居なければ → そのまま発生したままのエラーが表示されます。
image.png

##Catch(キャッチ)は、エラーを受け止めます。
このエラーというボール、結構、その時々で制御したい場面が出てくるんですよね。その時のために、途中で受け止める役割がキャッチくんです。
キャッチしたら、選別が出来るようになります。

スローくんが、エラーを投げました! → キャッチくんが受け止めます → 予め決めた条件で選別します。
(この図の場合はエラーとエラーにしないのパターンに分けています)
image.png

##Rethrow(リスロー)は、エラーを元の情報のまま流します
キャッチしたエラーは選別ができます。エラーとして取り扱いたい場合でも、「元のエラー情報をそのまま使いたい」というケースと「分かりやすいように改めてエラー情報を意図したものしたい」というケースが発生します。
キャッチくんは、一旦ボール(エラー情報)を止めてしまったので、再びフローにボールを流すには、何らかの「投げる」行為が必要となります。
そこで登場するのが、バレーボールのように華麗にボールをトスするリスローさんです。元のエラー情報をそのまま使いたい場合は、リスロー。改めてエラー情報を意図したものにしたい場合は、ここでもう一度、スローくんが出てきます。(このスローくんにどういうエラーにしたいか指定しないと、「不明なエラーが発生しました」という良く分からないものになります・・・)
image.png

##終わりに
こんな感じでイメージついてもらえれば、幸いです。

11
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?