Murayama blog.

it works.

意図的に例外を無視するとき


その昔、会社の小技天下一武道会*1で使ったネタです。


Javaとかのプログラムで検査例外をcatchする、
んだけど、
catchした例外を意図的に無視する、みたいなケースがたまにあります。

class Main {
	public static void main(String[] args) {
		try{
			// 何か例外が発生するかもしれないコード
			// ...
		}catch(Exception e){
			// 何もしない
		}
	}
}


みたいなコードのcatch節の話です。

		}catch(Exception e){
			// 何もしない
		}

こんなふうにコメントを書くことで、
例外に対して何もしない、ということを明示してるのは良い例です。
#書籍っぽく言うなら、良いプラクティスです。みたいな。


プログラミング経験の少ない人は、

		}catch(Exception e){
		}

とコメントを書かなかったりするので、
後で別の人がコードを保守するときに、
「例外処理忘れてる??」って疑問を抱かせてしまうわけです。


だから、例外処理を無視するときは「例外処理をあえて、していません」
という意思を明示するために、コメントをつけましょう。


と、ここまでは中級プログラマの話。


もうちょっとプログラムの品質をあげるテクニックもあります。
例外処理を無視するときは、こんなふうにも書けます。

		}catch(Exception ignored){
		}

Exceptionの変数名をeからignoredに変更しました。
ignored(ignore)ってのは無視する、っていう意味なんで、
「僕はあえて例外を処理していません」と意思表示することができます。


ただ、、
このテクニックの弱点は、
英語やネーミングに疎い人が保守をしたときは、このignoredに気づかない可能性があるということです。


変数名やメソッド名など、ネーミングにこだわりのない人が保守をしてしまうと、
「僕はあえて例外を処理していません」という僕のメッセージに気付いてもらえないかもしれません。
#やっぱ日本語のコメントも書いておく方が無難すね。


コメントも重要だけど、
プログラムコードで語るのも重要って話。
そのためには、変数名、メソッド名、クラス名などネーミングを工夫するのはとても重要。
名前重要。

*1:4年に一度開催されるとかしないとか