У меня есть класс foo
(который я не могу изменить) только с одним конструктором, который принимает один аргумент, например:
foo bar("Hello!");
Поскольку конструктор может выдать ошибку, я хочу реализовать обработку ошибок. Моя первая попытка была такой:
try {
foo bar("Hello!");
}
catch {
cerr << "Something went horribly wrong...";
return -1;
}
Однако теперь foo
находится в рамках блока try
и не может использоваться где-либо еще. Если я правильно понимаю, я не могу объявить объект без его инициализации, поэтому я могу объявить bar
вне блока try
. Итак, что мне делать, чтобы поймать ошибку, которую выдает конструктор?
EDIT: Чтобы уточнить, это в моем main
, и в catch
я прерву программу. Кроме того, аргумент — это файл, который будет открыт, поэтому нет известного безопасного ввода, который никогда не вызовет исключение.
main()
, верно? Так почему бы не поместить его в другую функцию, которую вы поместили в блок try? - person juanchopanza   schedule 10.09.2015bar
и его не удалось сконструировать, у вас есть небольшая проблема. - person MSalters   schedule 10.09.2015