BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Javaからチェック例外を除外する

Javaからチェック例外を除外する

Neal Gafter氏は、多くのJava開発者が自問しまた互いに質問する、「言語やプラットフォームはチェック例外を無くせば、もっと良くなるのでは?」という質問を問いかけた。

彼は、チェック例外に対する議論をこのように概説した。

チェック例外の有用性については、議論が続いています。多くの人々は、ソフトウエア工学上の失敗経験と特徴づけられるJavaのチェック例外について批判的です。実際に、チェック例外はAPIの複雑性を結論づけるかもしれず、プログラムは、例外処理コードで煩雑になっており、それらはコンパイラを充足させるだけのように思われます。ある人々は、チェック例外は優れた言語の機能であるが、JDKにおいてさえも、間違った使われ方をされている、と信じています。「専門家」においてもこのような悪い手本であるならば、通常のJavaプログラマにそれ以上の何を期待できるでしょうか?

おびただしい評論の中に続く議論を見ると、これは人々の意見を分裂させる、何か多くの開発者が意見を持っているような、例えば「匿名」の、それぞれChristian Plesner Hansen氏, Henri氏、Cedric氏のというように、別々の意見を持っているような論点であることを示していると思われる。

孤立したある種のコードがどのように見えるか、全くわからないのです。人々は、ルート例外をキャッチして6つか7つの特殊な例外を放棄し、或いはビジネスロジックを様々な例外で包囲して「例外」を放棄し、また例外をキャッチしてエラーコードを放棄し、はたまたキャッチブロックを空のまま放置するかヌルポインタ例外をキャッチします。
暫く前は、私はチェック例外に反対する活動は殆どしていませんでした。私はRFE(#6376696)をオープンし、Sun の関係者数名とそれについて議論しましたが、それについて何をしても殆ど興味あることは無く、RFEは結局「フィックスされず」としてクローズされました。チェック例外はまさに作用しないのです。.
私はチェック例外が好きな少数派ではないかと思っているのですが・・・チェック例外を取り除くことは、何かが悪いほうに動いた際に、アプリケーションが簡単につまずくような悪いコードを冗長させることになるのではないかと考えているのです。ライブラリは、開発者がエラーの結果について考えることを促すようなものではなくなってしまうでしょう。
私は断固として、ビッグコードベースにAPIを構築するにはチェック例外が極めて重要であることをわかっている人々の側に入れてもらうつもりなのです。勿論、それらは間違った使われ方をされることもあり得るのですが、非チェック例外は多くの箇所で同様に使われすぎているのです。

チェック例外は機能用しているだろうか?十分に適用されていないだけの優れた考え方なのだろうか、或いはやめてしまったほうがいい失敗した実験だったのだろうか?

ここでJavaから機能を取り除くもっと一般的なトピックを取り上げよう。我々は言語に機能を加えるとしても、それらを削除するのは避けてしまうので、言語は複雑さを増すばかりなのである。言語の複雑さを取り除き、その他の方法で言語を傷つけずに機能を削除することが可能だろうか?我々は、将来サポートが保証されないメソッドを削除し、APIを神聖な旧バージョンとの互換性を保たないでアップグレードすべきなのだろう?

Javaの将来に関する更なる対話は、ここInfoQのJavaコミュニティに注目してほしい。

(原文は2007年5月30日にリリースされました)

この記事に星をつける

おすすめ度
スタイル

BT