在javadoc中,标签@throws和@exception之间有什么区别?

时间:2011-04-01 07:07:09

标签: java javadoc

采用以下基于数组的字符堆栈的实现,例如:

public char peek() throws Underflow {
    if (!isEmpty()) {
        return stack[pos];
    } else {
        throw new Underflow("Peeking at an empty stack.");
    }
}

当我只使用文本编辑器时,我总是使用@exception标记,但现在我的IDE(Netbeans)在生成javadoc时使用了@throws。

所以我的问题是,两者之间的差异是什么时候应该优先于另一个(例如使用上面的代码)?

3 个答案:

答案 0 :(得分:47)

没有,他们是同义词。 From the docs

  

使用@throws代码记录例外情况   
注意 - 标签@throws@exception是同义词。

答案 1 :(得分:11)

添加了

@throws,因为它是关键字(方法声明中的“throws”子句),

而且,作为一个动词,阅读起来更自然。这读作一句话:

@throws NullPointerException

虽然这似乎更多余:

@exception NullPointerException

否则,两者都是同义词

答案 2 :(得分:5)

如果您的代码抛出@exception,则

Throwable不是100%正确。 @throws更准确。 (我意识到使用throw new Throwable()并没有一个好的用例,但理论上它是允许的。)