LoginSignup
38
17

More than 3 years have passed since last update.

Try Catch文がとらえるのは"例外"である

Last updated at Posted at 2020-09-02

要約

try-catchを使うときは、それが本当に必要か、適切にCatchできているか考えて使おう。

ひどいコードを見た

この間、Visual studioを用いてデバッグしていたら、例外が頻繁に発生していちいち止まるので、なんだこれと思ったら下記のようなコードがあった

    try
    {
        // a,b共に、nullになる可能性がある
        var a = GetA();
        var b = GetB();
        // 変数bのnullチェックはしていない
        if(a != null)
        {
            var aHoge = a.GetHoge();
            var bHoge = b.GetHoge();
            // なんらかの処理が続く
        }
    }
    catch
    {}

このコード何がやばいかっていうと変数bがnullになるケースがあったということです。
デバッグしているとbがnullになるのでexceptionを出すんですね。
普通にbがnullかどうかチェックするだけで例外は防げるのに...

で、なにが言いたいかというと、
なんも考えずtry-catchを使うんじゃねー!!
ってことです。

例に上げたコードで言えば変数bがnullであるかどうかチェックしていればtry-catchは必要ないわけです。
むしろtry-catchを使うことで自分のミスを見逃しています。

try-catchは便利です。
どんなエラーが起こっても一気に捉えて対応してくれるのだから。
ただ一つはっきり宣言しておくけども、

try-catchが捉えるのは例外だからな!!!

これを一つ肝に命じてコーディングを行っていきたいと思います。

とりあえず、コーディングに自信のない方はtry-catchを使わないことから初めてみてはどうでしょうか?
初版ではtry-catch使わずにしっかりと発生するエラーを確認し、本当にとらえようのないエラーの場合のみtry-catchを使うようにすればいいと思います。

ただしtry-finallyなら使ってもいい!

38
17
5

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
38
17