Я предполагаю, что статический объект имеет область видимости файла (он находится вне определения любой функции / класса). Вы можете подумать о том, чтобы переместить его в функцию доступа и получить к нему доступ только через эту функцию, например:
class Object;
Object& getObject()
{
static Object object;
return object;
}
Статический экземпляр Object будет инициализирован при первом вызове метода getObject () . Если выдает конструктор Object , вы можете легко перехватить исключение. Вам просто нужно помнить, что каждый вызов getObject () следует помещать в блок try / catch (или вы столкнетесь с исключением, переполняющим цепочку стека); это может быть немного неудобно, но, с другой стороны, вы можете решить обернуть только логически «первый» вызов, если вы знаете, какой из них находится в потоке логики программы.