これはEffective Javaからの引用です。
「可能であれば、下位層からの例外に対処する最善の方法は、下位層のメソッドが成功することを保証することによって、例外を回避することです。下位層に渡す前に上位レベルのメソッドのパラメーターの有効性を確認することで、これを実行できる場合があります。レイヤー。」
ハンドラーから下位レベルに伝搬される「AccessControlContext actx」というオブジェクトを考えてみましょう。「actx != null」という高レベルのチェックを行うことはできますが、低レベルでもう一度行う必要がありますか?
疑似コードの例:
class RestServlet {
void verify Servlet(AccessControlContext actx) {
// check made at higher level according to effective java
if (actx == null) { throw exception; }
// do something
Verify.checkAccessControl(actx); // calling lower leve
// do something
}
}
class Verify {
static checkAccessControl(actx) {
// DO I NEED NULL POINTER CHECK HERE AGAIN ?
}
}
質問はコメント内にネストされていますが、詳細に繰り返します。下位レベルでの冗長チェックにより、防御コーディングが保証されますが、冗長です。null を受け入れないことは Javadoc で詳しく説明されているかもしれませんが、それではバグのないコードを使用するという目的は解決されません。例外チェックを重複排除する必要がありますか?
注: これはランダムな例です。私の質問は、この例に固有のものではありません。例外をどれだけ複製するかを理解しようとする、より広範な質問です。