Почему не отлавливается исключение?
class A
{
public:
void SHOW()
{
std::cout << "A" << std::endl;
throw;
}
};
int main()
{
try
{
A* ptr = new A;
ptr->SHOW();
}
catch (...)
{
}
}
Ответ
Какое исключение?
Оператор throw без аргумента означает "сгенерировать перехваченное исключение заново" и применяется только в блоке catch
Если бы вы написали что-то типа throw 0 или throw "Error" - дело другое. А так...
Вот ситуация, где ваш throw действительно сработает:
class A
{
public:
void SHOW()
{
std::cout << "A" << std::endl;
throw;
}
};
int main()
{
try {
A* ptr = new A;
try
{
throw 5;
}
catch (...)
{
ptr->SHOW();
}
} catch(int x)
{
cout << x << endl;
}
}
Комментариев нет:
Отправить комментарий