Одно из решений, о которых никто не упомянул, - это использовать функцию try
блок. В принципе, если ситуация такова, что без
объект, остальная часть вашей программы не будет работать или делать что-либо
полезно, тогда единственная реальная проблема в том, что ваш пользователь получит какую-то
непонятного сообщения об ошибке, если конструктор завершается
исключение. Таким образом, вы заключаете конструктор в блок try функции, и
сгенерировать понятное сообщение с возвращением ошибки:
A::() try
: var1( initVar1 )
// ...
{
// Additional initialization code...
} catch ( std::exception const& ) {
std::cerr << "..." << std::endl;
exit(EXIT_FAILURE);
} catch (...) {
std::cerr << "Unknown error initializing A" << std::endl;
exit(EXIT_FAILURE);
}
Это решение действительно уместно только в том случае, если все
объект объявляется статически, или если вы можете выделить один
конструктор для статических экземпляров; для нестатических случаев это
Вероятно, лучше распространять исключение.