De lever des exceptions dans un constructeur n'est pas une mauvaise pratique.
Toutefois déclarer explicitement ou en les jetant java.lang.Exception
est presque toujours une mauvaise pratique.
Vous devez choisir une classe d'exception qui correspond à l'état exceptionnel, qui a eu lieu. Si vous jetez Exception
il est difficile pour l'appelant pour séparer cette exception à partir de n'importe quel nombre d'autres déclarées et non déclarées exceptions. Cela rend la récupération d'erreur difficile, et si l'appelant choisit de propager l'Exception, le problème des écarts de taux.
Quelqu'un a suggéré d'utiliser assert
pour la vérification des arguments. Le problème, c'est que la vérification de l' assert
des assertions peut être activé et désactivé via une machine virtuelle java en ligne de commande réglage. En utilisant des affirmations de vérification interne d'invariants est OK, mais les utiliser pour mettre en œuvre la vérification argument qui est spécifié dans votre javadoc n'est pas une bonne idée ... parce que cela signifie que votre méthode ne pourra appliquer strictement la spécification lors de l'affirmation de contrôle est activé.
Le deuxième problème avec assert
, c'est que si une assertion échoue, alors AssertionError
sera levée, et a reçu la sagesse, c'est que c'est une mauvaise idée d'essayer de l'attraper Error
et l'un de ses sous-types.