Да, исключение, вероятно, будет наиболее подходящим способом обработки ошибки здесь - по крайней мере, это будет самый чистый способ.Это также то, что оператор «new» будет делать в случае сбоя.
Если ваше приложение не знает об исключениях, у вас есть проблема.В этом случае метод фабрики в классе может иметь смысл.
static A * create() { ... }
Здесь вы можете обернуть это в программу без исключений, которая, вероятно, вернет ноль, если вы не можете создать объект.