Обработка исключений и уничтожение объектов в C++

Опубликовано: 15 Сентября, 2022

Исключением называется нежелательная ошибка, возникающая во время выполнения программы. Практика отделения вызывающей аномалии программы/кода от остальной части программы/кода известна как обработка исключений.

Объект называется экземпляром класса, который имеет то же имя, что и класс. Деструктор — это функция-член класса с тем же именем, что и у класса, но с предшествующим знаком «~» (тильда), а также она автоматически вызывается после исчерпания объема кода. Практика распыления или сноса существующей объектной памяти называется уничтожением объекта .
Другими словами, класс программы никогда не содержит какой-либо памяти или хранилища, это объект, который содержит память или хранилище, и для освобождения/уничтожения памяти созданного объекта мы используем деструкторы.

Например :

Выход:

Constructing an object of class Test 
Destructing the object of class Test 
Caught 10

Когда возникает исключение, деструкторы объектов (чья область действия заканчивается блоком try) автоматически вызываются перед выполнением блока catch. Вот почему вышеприведенная программа печатает « Уничтожение объекта теста » перед « Поймать 10 ».

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

Пример:

Выход :

Constructing an Object of class Test1
Constructing an Object of class Test2
Destructing an Object the class Test1
Caught 20

Деструкторы вызываются только для полностью построенных объектов. Когда конструктор объекта выдает исключение, деструктор для этого объекта не вызывается.

Предскажите вывод следующей программы:

Выход :

Constructing object number 1
Constructing object number 2
Constructing object number 3
Constructing object number 4
Destructing object number 3
Destructing object number 2
Destructing object number 1
Caught 4
C++ C