'возвращаемое значение' от Исключения Конструктора в Java?

Смотрите что следующий фрагмент кода:

A a = null
try {
  a = new A();
} finally {
  a.foo();  // What happens at this point?
}

Предположим, что конструктор A выдает исключение на этапе выполнения. В отмеченной строке я, как всегда гарантируют, получу NullPointerException, или нечто () будет вызвано на половину созданного экземпляра?

7
задан razlebe 19 March 2010 в 00:41
поделиться

4 ответа

Код внутри блока try содержит две различные операции:

  1. Создание нового экземпляра A .
  2. Назначьте новый экземпляр переменной с именем a .

Если на шаге 1 выброшено исключение, шаг 2 не будет выполнен.
Следовательно, вы всегда будете получать NullPointerException .

12
ответ дан 6 December 2019 в 09:18
поделиться

Если new A () вызывает исключение, вы всегда получите исключение NullPointerException, потому что присвоение не произойдет.

6
ответ дан 6 December 2019 в 09:18
поделиться

Я думаю, вы всегда получите NPE на отмеченной строке. У задания никогда не будет шанса произойти.

1
ответ дан 6 December 2019 в 09:18
поделиться

Если исключение произошло в вызове конструктора new A (), на этот раз объект имеет нулевое значение. Таким образом, a.foo () {{1} } выдает исключение для нулевого указателя. вы можете задать условие как if (a! = null) { a.foo (); }

1
ответ дан 6 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: