Сам C++ разработчик, читаю Thinking in Java... Глава 5 "ИНИЦИАЛИЗАЦИЯ И ЗАВЕРШЕНИЕ"
"Конструктор гарантирует инициализацию
Конечно, можно создать особый метод, назвать его initialize() и включить во все ваши классы.... "
А в чем разница с C++ ? И тут и там можно кинуть эксепшен в конструкторе и чтобы хендлить такие вещи нужно оборачивать создание объекта в try-catch блок. Или разница в том, что в случае cpp деструктор вызван не будет (т.к. обьект не создан), а в java будет все таки вызван когда GC решить убить обьект класса?