みなさん、こんにちは。
なつまるです。

今回は、try-catchの使う場面についての記事です。
度々ネットで議論されていますが
もっと気軽に使ってもいいんじゃないのか、というのが私の意見です。

そもそもtry-catchとは?

try-catch文はtryブロックとcatchブロックを繋げたものです。 ブロックとは{}で囲まれた範囲を指すプログラミングでの用語です。 tryブロックでは例外が発生しうる処理を書きます。

です。

…まあ、簡単に言うと
例外処理を実装したいときに使ってね、ということですね。

例外処理をきちんと実装すればいいのでは?

私も同意見です。
正直、if文で処理できるものにまでわざわざtry-catchするのはどうなのかとは思いますが
・if文を多用しなければならない
・例外が発生した場合に行う処理がある
・不特定多数の人が使うシステム(=想定外の利用方法をされる場合がある)
場合は使っちゃえ!と思います。

例外が発生した場合に行う処理って?

まず初めに浮かぶのは、データベースのロールバックでしょうか。
リレーショナルデータベースだと、1つの更新で複数のテーブルが更新されるケースが多いです。

分かり易い例でいうと
銀行で振り込みしたときの処理は以下です。

①自分の口座から、1000円マイナスにする
②相手の口座に、1000円プラスにする

この時、①は正常に処理でき、②でエラーになった場合
①の処理を取り消さなければ1000円は行方不明というおかしな状態になります。

こういう時にtry-cacthで例外処理を実装していれば
②でエラーになった場合にデータベースをロールバックできます。
そして【システムエラーが発生しました】というメッセージを表示することも可能です。
さらに【エラー:XXXXXXXXX(エラーコード)】とログに残すことさえ可能!

こういう場合は絶対にするべきですね。

他にも、

・画像、ファイルなどストレージを扱う場合
・formの入力値を用いて処理を行う場合
・GETパラメータを用いて処理を行う場合

など、外部のサービスを使用するケースや
予期せぬ値・悪意のある値が指定される可能性がある場合は
使っちゃいましょう。

まとめ

try-catchの何が便利かって、やっぱりロールバックですかね。
他にも、例外処理で404にとばせたり。。

なんでもかんでも使うのはよくないですが
条件文が多くなってきたとき、try-catchで簡潔にできそうだな
と思ったときは気軽に使ってもいいのでは!
と思いました。

以上。

まとめ

SHARE

なつまる
TEXT BY なつまる

RECOMMENDED POSTこの記事もおすすめ!