Middle
25
0
questionbank

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

Answer from sobes.tech neural network

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

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

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

Пример:

cpp

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

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

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

Пример:

cpp

Register or sign in to get access to full answers for all questions from the question bank.

exceptionsconstructorsobject-initializationerror-handlingexception-handling__init__