у меня есть такой код, как это:уборка после исключения
class myclass
{
myclass()
{
// doing some init here
}
~myclass()
{
// doing some important clean up here
}
void Do()
{
// doing some work which may throw exception
}
}
и я использую этот класс таким образом:
MyFunction()
{
myclass mc;
mc.do();
}
Мой вопрос:
Если является исключением в do-функции, что произойдет? Является деструктором myclass?
Если нет, то каков наилучший способ справиться с такими ситуациями? Предположим, что у меня нет исходного кода, и я уверен, что происходит в деструкторе.
C++ гарантирует, что деструктор будет вызван, поэтому вам не придется беспокоиться. –
http://stackoverflow.com/questions/8311457/are-destructors-called-after-a-throw-in-c –
Хороший вопрос. Уже ответил. – Sebastian