Prenez cette méthode
/**
* @return List of group IDs the person belongs to
*
*/
public List<String> getGroups() {
if (this.getId().equals("")) return null;
}
Je voudrais lever l'exception au lieu de retourner null, quelle est l'exception à lever lorsqu'un paramètre/dépendance important n'a pas été défini?
J'utiliserais IllegalArgumentException
si le paramètre/argument est contrôlé de l'extérieur, ou IllegalStateException
si la méthode est juste appelée à tort moment (état). Dans votre cas spécifique, je pense que c'est ce dernier. Une alternative (douteuse) est NullPointerException
.
Cela doit cependant être explicitement documenté dans le @throws
pour que l'utilisateur en comprenne la raison.
Que diriez-vous IllegalStateException ?
S'il n'est pas possible de garantir que l'identifiant est toujours défini (en l'exigeant dans le constructeur par exemple, où vous pouvez vérifier qu'un identifiant valide a été transmis), je pense que les autres suggestions à lancer IllegalStateException sont corrects. Mais il serait préférable d'essayer de vous assurer que votre objet ne peut pas entrer dans cet état en premier lieu si possible
J'utiliserais une exception IllegalStateException car l'ID est l'état du propriétaire. Si l'ID était passé en paramètre, une exception IllegalArgumentException aurait raison.
Au lieu de lever une exception, vous devez simplement renvoyer une liste vide. Si une dépendance/un paramètre n'est pas respecté, il n'y a aucun résultat. D'après les commentaires et le code publiés, il semble que ce soit le comportement attendu. Si l'id est vide, aucun groupe n'est attaché, donc une liste vide.
Je créerais mon propre type d'exception en étendant Exception. De cette façon, les fonctions d'appel peuvent intercepter cette exception particulière et la gérer avec élégance, le cas échéant. Remarque, vous pouvez faire la même chose avec à peu près tout ce qui étend l'exception, mais je préfère créer mes propres classes d'exception afin que je puisse être très robuste dans ma gestion des exceptions. Bien sûr, cela dépend de vous.