要約
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なら使ってもいい!