Middle
24
0
questionbank

Что нужно сделать, чтобы выбрасывать исключения из конструктора?

Ответ от нейросети sobes.tech

Для выбрасывания исключения из конструктора ничего специального делать не нужно. Стандартный механизм throw работает в конструкторах, как и в обычных функциях.

При выбрасывании исключения из конструктора:

  1. Объекты, инициализированные до точки выброса исключения, будут уничтожены в обратном порядке их создания.
  2. Члены объекта, инициализированные до точки выброса исключения, будут уничтожены.
  3. Базовые классы, подчасти которых были успешно инициализированы, будут корректно уничтожены.
  4. Память, выделенная для объекта, будет освобождеена (если объект создавался динамически с использованием new).
  5. Сам объект считается некорректно сконструированным, и его деструктор вызываться не будет, если исключение было выброшено до полного завершения конструктора.

Пример:

cpp

Для выбрасывания исключения из конструктора ничего специального делать не нужно. Стандартный механизм throw работает в конструкторах, как и в обычных функциях.

При выбрасывании исключения из конструктора:

  1. Объекты, инициализированные до точки выброса исключения, будут уничтожены в обратном порядке их создания.
  2. Члены объекта, инициализированные до точки выброса исключения, будут уничтожены.
  3. Базовые классы, подчасти которых были успешно инициализированы, будут корректно уничтожены.
  4. Память, выделенная для объекта, будет освобождеена (если объект создавался динамически с использованием new).
  5. Сам объект считается некорректно сконструированным, и его деструктор вызываться не будет, если исключение было выброшено до полного завершения конструктора.

Пример:

cpp

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

exceptionsconstructorsobject-initializationerror-handlingexception-handling__init__