C++: Как перехватывать исключения, создаваемые конструкторами?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 C++: Как перехватывать исключения, создаваемые конструкторами?

Сообщение Anonymous »

У меня есть класс, назовем его A, конструктор которого принимает некоторые входные аргументы и может выдать исключение, если они несовместимы для создания этого объекта. В моем основном коде я создаю объект типа A следующим образом:

Код: Выделить всё

A my_obj(arg1,arg2,arg3);
и используйте его. Очевидно, что если конструктор потерпит неудачу и выдаст исключение, выполнение программы будет прекращено после вывода сообщения о «необработанном исключении».

Однако я хотел бы дайте пользователю дополнительную информацию в этом случае и сообщите ему/ей, почему было выбрано исключение. Итак, мне нужен способ перехватить исключение.

С этой целью одна из возможностей — заключить весь код, начиная с объявления my_obj до конца программы, в try заблокировать и перехватить исключение впоследствии:

Код: Выделить всё

try {
A my_obj(arg1, arg2, arg3);
// ...
// about 100 other lines of code being executed if my_obj is created properly
}
catch (std::exception& e) {
// print a user-friendly error message and exit
}
Но мне это кажется несколько «излишним». В частности, поскольку в оставшихся 100 строках не создается никаких других исключений. Есть ли другой более приятный способ добиться этого?

Подробнее здесь: https://stackoverflow.com/questions/453 ... nstructors
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»