Je vous recommande de ne jamais jeter NullPointerException
par vous-même.
La principale raison de ne pas le faire, Thorbjørn Ravn Andersen dit dans un commentaire ci-dessous, c'est que vous n'avez pas wan pas mélanger "réelle, la mauvaise Npe" avec Npe jeté intentionnellement.
Donc, jusqu'à ce que vous êtes sûr que vous êtes capable de reconnaître les "valides" NPE, je vous recommande d'utiliser IllegalArgumentException
quand vous voulez dire à votre API utilisateur null
n'est pas un argument valide de valeur. Votre comportement de la méthode lorsque illégale null en paramètre passé doivent être documentés.
L'autre (plus moderne à mon humble avis) l'option est d'utiliser @NotNull
d'annotation près de l'argument.
Voici un article sur l'utilisation de @NotNull annotation.
Comme je l'ai mentionné plus tôt, il peut aussi y avoir des cas, lors du lancer de NPE ne sera pas source de confusion, soit à vous ou à vos coéquipiers: NPE la cause doit être clair et reconnaissable.
Par exemple, si vous utilisez une bibliothèque avec des conditions préalables module, comme Guava
, puis-je trouver de l'aide checkNotNull()
-comme des méthodes est une meilleure façon de traiter avec illégalement transmis les valeurs null.
checkNotNull(arg, msg)
jette NPE, mais à partir de la stacktrace c'est assez claire, qu'elle a été produite par Preconditions.checkNotNull()
et donc il n'est pas un bug inconnu, mais plutôt le comportement attendu.