Middle+
32
0
questionbank

В чем заключается особенность выбрасывания исключений в конструкторах и деструкторах?

Answer from sobes.tech neural network

Выбрасывание исключений из конструктора приводит к тому, что объект не будет полностью создан. В этом случае автоматически вызываются деструкторы для всех уже проинициализированных подобъектов (членов-данных и базовых классов).

Выбрасывание исключений из деструктора крайне нежелательно. В случае, если исключение выбрасывается во время обработки другого активного исключения (например, при раскрутке стека), программа завершится вызовом std::terminate. Даже в отсутствие другого активного исключения, выброс исключения из деструктора может нарушить ожидаемый поток выполнения и сделать код непредсказуемым. Рекомендуется обрабатывать все исключения внутри деструктора или проектировать код так, чтобы деструктор не мог выбросить исключение.

cpp

Выбрасывание исключений из конструктора приводит к тому, что объект не будет полностью создан. В этом случае автоматически вызываются деструкторы для всех уже проинициализированных подобъектов (членов-данных и базовых классов).

Выбрасывание исключений из деструктора крайне нежелательно. В случае, если исключение выбрасывается во время обработки другого активного исключения (например, при раскрутке стека), программа завершится вызовом std::terminate. Даже в отсутствие другого активного исключения, выброс исключения из деструктора может нарушить ожидаемый поток выполнения и сделать код непредсказуемым. Рекомендуется обрабатывать все исключения внутри деструктора или проектировать код так, чтобы деструктор не мог выбросить исключение.

cpp

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

exceptionsconstructorsdestructorsresource-managementerror-handlingobject-lifecycle