Если ваш конструктор дает сбой, вы должны выбросить исключение, а не возвращать ложное значение. Если вы не используете такой язык, как C, в котором исключения в конструкции объекта означают, что его никогда не удастся деконструировать.
Причина этого в том, что исключение вынуждает программу работать с ним и выдает неверные данные. Если вы вернете значение, скажем, -1 или что-то еще, программа может продолжать молча и игнорировать это, пока это не вызовет проблему позже в будущем. Создание исключения не позволяет этим тихим ошибкам войти в код. Возможно, вы знаете, что он возвращает false, если он не сработал должным образом, но ваш коллега не может и может с радостью попытаться использовать объект, который, по его мнению, был создан им, чтобы выяснить, что это действительно логическое значение.