連載
» 2003年10月07日 10時00分 公開

JavaTips 〜Eclipse活用編:Eclipseですべての例外クラスを捕捉する

[山田祥寛,@IT]

 Javaでクラスをコーディングするうえでの基本的なルールの1つとして、コード中で発生する可能性がある「すべての」例外はcatchされなければならない――発生した例外は必ず処理されなければならない――というものがあります。

 さほど厳密でないアプリケーションでは、すべての例外をExceptionクラス(すべての例外に共通のスーパークラス)でcatchしてしまうということもままあるようですが、厳密には例外クラスごとに処理方法を設計・コーディングするのが好ましいといえましょう。

 ただし、コーディングに慣れたプログラマでも、個々のメソッドで発生する可能性がある例外クラスをすべて覚えているというわけではありません。結局は、コンパイラの指摘を待つか、あるいは、APIリファレンスなどを活用するしかないわけです。

 しかし、Eclipseでは現在のコード中で発生し得る例外クラスを検出し、try/cacthブロックを自動的に生成する機能を持っています。これによって、コーディングの手間を省くことができ、例外処理それ自体に集中することができます。

操作手順

(1)該当のコード部分を選択する

 エディタ上で、tryブロックで囲みたいコード部分を選択、反転させます。

画面1

(2)try/catchブロックを自動生成する

 コードを選択状態で右クリック、表示されたコンテキストメニューから[ソース]→[Try/Catch ブロックで囲む]を選択してください。

画面2

 上図のように、選択されたコード中で発生する可能性があるすべての例外がcatchブロックとして列記されるはずです。

 初期状態では単純にトレース情報を出力するのみですが、一般的にはなにかしらのフォロー処理を記述することが強く推奨されます。特別な状況でない限り、少なくともcatchブロックの中身が空であるという状況は避けるべきです(障害が発生しても、エラーメッセージもログも残らないわけですから、これは当然です)。最低限、ロギングかトレース情報の表示は行うべきでしょう、万が一、空のcatchブロックを作成する場合にも必ずその理由をコメントとして残す癖をつけておくとよいでしょう。

 なお、もしも選択されたコード中に「catchされていない例外」が存在しない場合には、RuntimeException(実行時エラー)をキャッチするかどうかを聞かれます。

画面3

 RuntimeExceptionは、通常、Javaにおいては「catchする必要がない」例外です。

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。