web-dev-qa-db-ja.com

javadocでは、タグ@throwsと@exceptionの違いは何ですか?

たとえば、配列ベースの文字スタックの次の実装を考えてみましょう。

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つの違いは何ですか?(たとえば上記のコードを使用して)一方を他方よりも優先する必要があるのはいつですか?

33
jon2512chua

何もありません、それらは同義語です。 ドキュメントから

@throwsタグを使用した例外の文書化
注-タグ@throws@exceptionは同義語です。

48
T.J. Crowder

@throwsはキーワード(メソッド宣言の「throws」句)であるために追加されました。

そして、動詞として、読むのがより自然です。これは文として読みます:

@throws NullPointerException

これはより冗長に見えますが:

@exception NullPointerException

それ以外の場合、両方とも同義語です

11
Hardik Mishra

コードがThrowableをスローした場合、_@exception_は100%正しくありません。 _@throws_の方が正確です。 (throw new Throwable()を使用するのに適したユースケースはないことはわかっていますが、理論的には許可されています。)

5
combinatorics