【Effective Java】項目62:各メソッドがスローするすべての例外を文書化する
チェックされる例外は個別に宣言するべきです。
そして、それぞれの例外の発生条件を Javadoc の @throws に必ず文書化するべきです。
throws Exception や throws Throwable というように、複数の例外をまとめて throws 宣言してはいけません。
扱うべき例外が不明瞭になってしまうためです。
チェックされない例外は throws 宣言をするべきではありません。
その代わりに Javadoc の @throws に文書化するべきです。
これはメソッドの事前条件を示すものとして機能します。
ただし、すべてのチェックされない例外を文書化することはほぼ不可能であることも覚えておいてください。 例えば自分が作成したメソッドの実装を変えていなくても、下位レイヤでスローされる例外は変更されているかもしれないからです。
まとめると以下のようになります。
| throws | Javadoc | |
|---|---|---|
| チェックされる例外 | 個別に宣言する | 必ず文書化する |
| チェックされない例外 | 宣言しない | 文書化するべきだが、すべては不可能 |
クラスの各メソッドが同じ例外を発生させる場合、各メソッドではなくクラス自体の Javadoc にまとめて書く場合もあります。