Dans la javadoc, quelle est la différence entre les balises @throws et @exception?
Prendre la suite de la mise en œuvre d'un tableau de base de la pile de caractères, par exemple:
public char peek() throws Underflow {
if (!isEmpty()) {
return stack[pos];
} else {
throw new Underflow("Peeking at an empty stack.");
}
}
Dos quand je suis juste en utilisant un éditeur de texte, j'utilise toujours le @exception de la balise, mais maintenant mon IDE (Netbeans) utilisé @throws lors de la génération de la javadoc.
Donc ma question est, quelle est la différence entre les deux et quand l'une devrait être préféré à un autre (à l'aide du code ci-dessus par exemple)?
Vous devez vous connecter pour publier un commentaire.
Il n'en est aucun, ils sont synonymes. À partir de la documentation:
@exception
est venu en premier, mais alors (et c'est complet de la spéculation) je pense que quelqu'un a été estimé que plus long et également n'a pas la cravate de bien avec Javathrows
mot-clé, alors ils ont ajouté@throws
. Il serait très au début, cependant, je pense qu'ils étaient tous les deux, quand j'ai commencé à l'aide de Java en 1995. Je l'ai presque jamais vu@exception
utilisé à l'état sauvage, il semble y avoir une nette préférence pour@throws
dans la communauté.@throws
fin avec un "s" mais@return
ne l'est pas.return
s'intègre mieux avecparam
(par exemple, il décrit la valeur de retour, il décrit le paramètre), et en effet avec l'original@exception
. Mais alors, en parallèle de la construction qui est sorti par la fenêtre avec@throws
. 🙂@throws
a été ajouté parce que c'est un mot-clé ("lance" clause dans une déclaration de méthode),et, en tant que verbe, il est juste plus naturel à lire. Cela se lit comme une phrase:
bien que cela semble plus redondante:
Sinon, les deux sont synonymes
@exception
n'est pas correct à 100% si vous code lance unThrowable
.@throws
est plus exact. (Je me rends compte il n'y a pas un bon cas d'utilisation pour toujours à l'aide dethrow new Throwable()
, mais théoriquement, il est permis.)Error
s sont aussiThrowable
s qui ne sont pasException
s. Vous n'avez pas l'habitude de les jeter à la main, mais je l'ai déjà écrit quelquesthrow new AssertionError()
.