Back to questions
Открытые Решения
Junior — Middle
79
Какие последствия возникают, если в конструкторе объекта происходит необработанное исключение?
Companies where asked
Answer from AI
sobes.tech AI
Если в конструкторе объекта в C++ происходит необработанное исключение, то:
- Конструктор считается неуспешно завершённым, объект не создаётся.
- Для всех уже созданных членов объекта (например, полей, которые были инициализированы до места возникновения исключения) вызываются деструкторы.
- Память, выделенная под объект, освобождается автоматически.
- Исключение передаётся дальше по стеку вызовов, если не перехвачено внутри конструктора.
Это предотвращает создание частично инициализированных объектов и обеспечивает безопасность ресурсов.
Пример:
class MyClass {
public:
MyClass() {
// Инициализация
throw std::runtime_error("Ошибка в конструкторе");
}
};
int main() {
try {
MyClass obj;
} catch (const std::exception& e) {
std::cout << "Поймано исключение: " << e.what() << std::endl;
}
}