Java の checked exception について
C++ には存在せず、大体の人が使い方がよくわかんなくて悩むと思われる「checked exception」。
要するに、普通の java.lang.Exception のことである。
同僚に2004年の記事を転送してもらう。
なるほど。この記事によると、
Bruce Eckel タカ派。 Thinking in Java の著者。 「チェック済み例外」否定派。いかなる場合でもチェック なし例外を使用するべき。 C++ にはチェックなし例外しか存在しない。「例外」を 「例外的」な場合にのみ使用すべき。 Rod Johnson J2EE Design and Development 著者。 二次的な戻りコードのみにチェック済み例外を使用すべき。 戻りコードの代替としてチェック例外を使用する立場。 Josh Bloch Effective Java の著者。見解はもっとも Sun 寄り。
といったところか。ちなみに、Bruce Eckel は ANSI/ISO C++ 標準化委員会の設立メンバーの一人。Rod Johnson は言わずと知れた Spring フレームワークの作者だ。Josh Bloch の 「Effective Java」は Java やっている人の中では大人気書籍で崇拝者も多いような気がするので、Josh Bloch の見解の支持者が日本だと一番多いのかもしれない。
私自身としては、Rod Johnson の考え方が一番しっくりくる。
checked exception はビジネスルール違反(ビジネスロジックの中でそれによる処理分岐や、特別の処理が発生する場合)のみに使用するべきだと思う。
ただ、そもそも checked exception とか意味わかんないですけどwちょw
という Bruce Eckel の言うこともわかる。彼の言ってることは、C++ の例外の実装が正しいのだ!ということに過ぎない気もするけども。(私だって元々C++の人間なんで、多分にその影響を受けてる気はするし)
Java が「美しさ」よりも「実用性」を重視した言語であると感じさせられるのはこの辺の言語仕様だなあ。