以下の機能を持っている場合、2つの選択肢があります
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
return null;
}
private MyObject findBlank() {
for (int i = 0; i < pieces.length; i++) {
if(pieces[i].isBlank()){
return pieces[i];
}
}
throw new NoSuchFieldError("No blank piece found!");
}
このメソッドから、「ピース」の1つが常にオブジェクトを返す必要があることがわかりisBlank() == true
ます。最後にnullを返すのは、コンパイラを喜ばせるためだけです。これは事実であり、null が返された場合、私のコードはとにかく動作しないため、例外をスローするのは正しいですか?
私のオプションは次のとおりです。
- null を返すと、アプリはいくつかのエッジ ケースで NullPointerException を取得します。
- null を返し、メソッドの使用を (myObject != null) チェックでラップする
- 実行時にそれを爆破する例外をスローします
私が求めているのは、これは例外をスローする正しい場所ですか? つまり、その状況に陥った場合、私にできることは何もありません。これは「例外的」に分類されますか、それともメソッドが返すものを null チェックする必要があります (これにより、コードが恐ろしく見えます)。null を返すべきではないことがわかっている場合は、例外をスローする必要がありますか?
また、どの例外を選択するか、例外を拡張して独自のものをスローするにはどうすればよいですか?