Может быть, лучше сделать легкий конструктор, который всегда выполняется успешно, и функцию Initialize, которая выполняет тяжелую работу и выдает исключение при ошибке.
Редактировать . После некоторых критических отзывов я обнаружил, что мое предложение не соответствует требованиям RAII:
«Ресурсы приобретаются во время инициализации, когда нет возможности использовать их до того, как они станут доступны».
Я не изменяю свой исходный пост, может быть полезно иметь это как типичный пример ошибки проектирования.