Язык спецификации Java 3-е издание полностью охватывает ваш вопрос:
Всякий раз, когда новыйСоздается экземпляр класса, для него выделяется пространство памяти с местом для всех переменных экземпляра, объявленных в типе класса, и всех переменных экземпляра, объявленных в каждом суперклассе типа класса, включая все переменные экземпляра, которые могут быть скрыты.Если для выделения памяти для объекта недостаточно места, то создание экземпляра класса завершается внезапно с OutOfMemoryError
.В противном случае все переменные экземпляра в новом объекте, включая объявленные в суперклассах, инициализируются значениями по умолчанию.
Непосредственно перед тем, как в качестве результата возвращается ссылка на вновь созданный объект, указанный конструктор обрабатывается для инициализации нового объекта, используя следующую процедуру: [...]
Поэтому выражение new
просто не может вернуть null
.Все, что возвращается, если выполнение завершается нормально, всегда будет действительным instanceof
независимо от того, какой класс был создан.
Обработка исключений
Вообще говоря, возможные исключения обычно обрабатываются с помощьюtry-catch
block:
String someString = askFromUser();
try {
int num = Integer.parseInt(someString);
doSomethingWith(num);
} catch (NumberFormatException e) {
complainAboutIt();
}
В вашем случае, вы можете рассмотреть возможность помещения new SomeClass()
в try
блок с соответствующим catch (OutOfMemoryError e)
, но это очень нетипично.Если вы не планируете делать что-то значимое, когда это происходит, в большинстве типичных сценариев лучше не catch
любых Error
, которые могут возникнуть во время выполнения вашей программы.
Из документации:
Error
является подклассом Throwable
, который указывает на серьезные проблемы, которые разумное применение не должно * try
до catch
.Большинство таких ошибок являются ненормальными условиями.
Метод не обязан объявлять в своем предложении throws
любые подклассы Error
, которые могут быть выброшены во время выполнения метода, но не перехвачены, поскольку эти ошибкиненормальные условия, которые никогда не должны возникать.
Смежные вопросы
См. Также