たとえば、配列ベースの文字スタックの次の実装を考えてみましょう。
public char peek() throws Underflow {
if (!isEmpty()) {
return stack[pos];
} else {
throw new Underflow("Peeking at an empty stack.");
}
}
テキストエディタだけを使用していたときは、常に@exceptionタグを使用していましたが、現在は、javadocの生成時にIDE(Netbeans)が@throwsを使用しています。
だから私の質問は、2つの違いは何ですか?(たとえば上記のコードを使用して)一方を他方よりも優先する必要があるのはいつですか?
何もありません、それらは同義語です。 ドキュメントから :
@throws
タグを使用した例外の文書化
注-タグ@throws
と@exception
は同義語です。
@throws
はキーワード(メソッド宣言の「throws」句)であるために追加されました。
そして、動詞として、読むのがより自然です。これは文として読みます:
@throws NullPointerException
これはより冗長に見えますが:
@exception NullPointerException
それ以外の場合、両方とも同義語です
コードがThrowable
をスローした場合、_@exception
_は100%正しくありません。 _@throws
_の方が正確です。 (throw new Throwable()
を使用するのに適したユースケースはないことはわかっていますが、理論的には許可されています。)