ну по сути это и правильнее:
А можно в конструктор поставить исключение?
Тимур Исхаков
Java Developer в GridNine
26 февраля 2021, 13:20
Ну давайте рассмотрим, с каких сторон это неправильно.
1. Как минимум, до выброса исключения будет загружен класс, загружена статика класса и всех родителей, вызваны конструкторы всех родителей, инициализированы все переменные, и даже если у вашего класса нет родителей, а значит будет вызван только конструктор Object, это все равно чудовищная растрата ресурсов, а представьте, что наследуете этим классом разнообразные интерфейсы и классы.
2. Вы выбрасываете не проверяемое исключение, никто не узнает, что нельзя создать экземпляр, пока не упадет программа, потому что ссылка, которой попытаются присвоить значение вашего класса окажется null, и это при условии, что само присвоение чудесным образом попало в блок try{}.
3. Наиболее неочевидная проблема, все наследники вашего класса будут выбрасывать исключение и не будут созданы.
Если попытаться провести аналогию, то представьте, что пытаетесь выпустить на заводе автомобиль. На конвейер прибудут все детали для сборки, но при попытке их собрать, завод взрывается. В общем никогда так не делайте.
если читать учебник Шилдта, то там эти темы чуть ли не в одной теме про final и абстрактные классы\методы, поэтому не удивлён, что в третей задачке встретился такой около подвох.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ