Non, je ne pense pas du tout que cela soit "utile".
Au contraire, vous devez veiller à ne pas lancer de NPE en premier lieu. Vérifiez vos valeurs avant de les utiliser ( null
validation) et autres. Cela devrait se produire antes de vous appelez une méthode de bibliothèque et après vous obtenez un résultat (si l'API spécifie que la méthode peut renvoyer un résultat) null
. Bien sûr, il arrive qu'il le fasse quand même, mais c'est alors un bug).
Si vous pensez que les NPE doivent porter ces informations pour le débogage, détrompez-vous. C'est à cela que servent les débogueurs. Une exception est simplement là pour vous informer que quelque chose a mal tourné. N'oubliez pas que les exceptions non vérifiées se produisent au moment de l'exécution - et doivent être générées à ce moment-là. Pour que l'exception sache quelle variable contenu null
le octet code devrait connaître les noms de variables. Vous ne voulez pas alourdir votre code d'octet avec ce genre de choses. Le nom de la classe est contenu dans chaque sortie de logging que je reçois de mes programmes. C'est à ça que sert la journalisation.
Java facilite déjà grandement le processus de débogage en vous donnant le numéro de ligne et la trace complète de la pile. Les programmes C échouent avec Segmentation fault
. Vous devez utiliser strace
ou un débogueur afin d'obtenir autant d'informations.
Notez que javac
fait inclure une option de compilation pour inclure des informations sur le fichier source au moment de la compilation, mais ceci est destiné à être utilisé par un débogueur, pas les exceptions aléatoires qui sont lancées. En citant Sun javac
page de manuel :
-g Generate all debugging information, including local variables.
By default, only line number and source file information is
generated.
-g:none
Do not generate any debugging information.
-g:{keyword list}
Generate only some kinds of debugging information, specified
by a comma separated list of keywords. Valid keywords are:
source
Source file debugging information
lines
Line number debugging information
vars
Local variable debugging information
Pour faire court : utilisez un débogueur.