例外タイプの正確なタイプは(実際にはプログラミング言語で)どれほど重要ですか? 本の章の階層があり、メソッドを使用して章にアクセスするとします。1つは次のとおりです。
public void chapterSearch(int chapter) {
try {
chapterString = this.hierarchy.get(chapter).getText();
} catch(IndexOutOfBoundsException e) {
throw new....
}
}
2番目はこれです:
public void chapterSearch(String chapterString) {
for(int i = 0; i < this.hierarchy.size(); i++) {
if(chapterString.equals(this.hierarchy.get(i).getText())) {
break;
} else if(i == this.hierarchy.size() - 1) {
throw new IllegalArgumentException...
}
}
}
最初のメソッドでは、 new をスローすることは明らかIndexOutOfBoundsException
です。しかし、IllegalArgumentException
使用できるものがあります。これは、javadoc によると
メソッドに不正または不適切な引数が渡されたことを示すためにスローされます。
これも状況に非常に適しているようです。つまり、そのような章番号がない場所に非常に大きな章番号を渡すことは、私にはまったく不適切に思えます。または、コメントのように、独自の新しい例外をスローできますChapterNotFoundException
。しかし、これは面倒な場合があり、この Exception を複数回使用することはないかもしれません。その場合、既存の Exception を使用する方が適切であると思われるかもしれません。
しかし、一般的に、このケースIndexOutOfBoundsException
が最も適切なままである場合、またはあなたが好む場合でもChapterNotFoundException
、例外タイプの選択は一般的にどの程度重要ですか?
独自の Exception タイプを作成することは、それを頻繁に使用すると非常に理にかなっていると思いますが、そうでない場合はどうなりますか?
編集:以下の回答も非常に優れていますが、関連する優れた回答はこちらです。