Java: Как извлечь имя / тип разыменованного объекта из NullPointerException - PullRequest
3 голосов
/ 26 апреля 2011

Вот моя ситуация.

При разработке Java-приложения вы иногда получаете java.lang.NullPointerException.Вы можете напечатать трассировку стека, и она сообщит вам класс и номер строки, на которую был разыменован нулевой объект.Как правило, довольно просто выяснить, какой объект может быть нулевым (вы всегда можете проверить, не обнулились ли все объекты, разыменованные в этом операторе).

Можно ли программно узнать из NullPointerException, какой именно объект ссылкиnull (если в одном выражении используется несколько разных объектов)?

Ответы [ 4 ]

4 голосов
/ 26 апреля 2011

Объект не может быть null, только ссылка может быть null. Самый простой способ проверить, какая ссылка является нулевой, - отнести каждое значение к другой строке.

2 голосов
/ 26 апреля 2011

Нет объекта по определению. Ссылка является нулевой.

Чтение вашего вопроса еще раз, и я думаю, что неправильно понял. Я полагаю, вы имеете в виду что-то вроде:

   if(ref1.method() && ref2.method()) {
       ....
   }

и вы хотите знать, является ли ref1 или ref2 нулевым.

Если так, то нет. Разделите выписку на отдельные строки.

1 голос
/ 26 апреля 2011

Нет.Вы не можете сделать это (в общем случае).Причина в том, что Java (как и большинство других языков) не отслеживает промежуточные результаты.

0 голосов
/ 26 апреля 2011

В теории вы могли бы .. на практике вы не можете ... я имею в виду ... это возможно. Построить вам придется либо расширить JVM, либо попытаться найти другое трудное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...