Java6までしか知らない自分にとって、 例外処理は「とにかくcatchを書くもの」だった。
同じ処理でも、例外ごとに延々とcatchを書く。 あの頃、どれだけcatchを書いただろう。
■ Java6以前の世界 〜catch地獄〜
try {
process();
} catch (IOException e) {
logger.error(e);
} catch (SQLException e) {
logger.error(e);
} catch (ParseException e) {
logger.error(e);
}
全部同じ処理なのに、分けて書くしかなかった。
コピペして、微妙に修正して、また増える。 気づけばcatchだらけ。
例外が増えるたびに、catchも増える。 設計ではなく、文法に縛られていた。
■ Java7で登場したマルチキャッチ
try {
process();
} catch (IOException | SQLException | ParseException e) {
logger.error(e);
}
一行で済む。
たったそれだけの違い。 しかし、これは確実に「進化」だった。
例外を「どう扱うか」でまとめられるようになったからだ。
■ 例外クラス自体は変わらない
public class BusinessException extends Exception {
public BusinessException(String message, Throwable cause) {
super(message, cause);
}
}
例外を作る方法は変わらない。
■ Java7がもたらした本当の進化
マルチキャッチは単なる文法改善ではない。
「同じ扱いをする例外は、まとめられる」
つまり、
例外は“型”ではなく、“扱い”で考える。
Java7で、ようやく catch地獄から脱出できた。
50代、Javaを学び直して思う。
0 件のコメント:
コメントを投稿