Нет, я не думаю, что это вообще было бы "полезно".
Вместо этого вам следует остерегаться не бросать NPE. Проверка ваших значений перед их использованием (null
проверка) и лайков. Это должно произойти за до вызова метода библиотеки и после возврата результата (если API указывает, что метод может вернуть null
. Конечно, иногда это так и происходит) в любом случае, но тогда это ошибка).
Если вы считаете, что NPE должны нести эту информацию для отладки, подумайте еще раз. Вот для чего хороши отладчики. Исключение - просто сообщить вам, что что-то пошло не так. Помните, что непроверенные исключения возникают во время выполнения - и должны быть сгенерированы там. Чтобы исключение узнало, какая переменная содержит null
, байт код должен знать об именах переменных. Вы не хотите переполнять свой байт-код такими вещами. Имя класса содержится в каждом выводе журнала, который я получаю из своих программ. Вот для чего нужна регистрация.
Java уже значительно облегчает процесс отладки, предоставляя вам номер строки и полную трассировку стека. Программы на С не работают с Segmentation fault
. Вы должны использовать strace
или отладчик, чтобы получить столько информации.
Обратите внимание, что javac
включает опцию времени компиляции для включения информации исходного файла во время компиляции, но она предназначена для использования отладчиком, не случайные исключения которые бросают. Цитата справочной страницы Sun javac
:
-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<br/>
Source file debugging information
lines
Line number debugging information
vars
Local variable debugging information
Короче говоря: используйте отладчик.