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

以下面的基于数组的字符堆栈的实现为例:

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

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

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

没有,他们是同义词。 来自文档 :

使用@throws标记记录exception
注 – 标签@throws@exception是同义词。

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

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

 @throws NullPointerException 

虽然这似乎更多余:

 @exception NullPointerException 

否则,两者都是同义词

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