Согласно разделу 12.6.1. Реализация Finalization JLS:
Объект o не является окончательным до тех пор, пока его конструктор не вызовет конструктор для Object on o и этот вызов не завершится успешно (то есть, не выбрасывая исключение).
Если ваш конструктор выдает исключение после , конструктор объекта завершается, ваш объект должен быть финализирован, поэтому
finalize()
все равно можно вызвать.В примере 12.5 есть хороший пример перехода через конструкцию объекта. Создание экземпляров нового класса , который точно показывает, когда вызывается конструктор объекта.