C++ Рассмотрим ниже код:Понимание 'попробовать':
#include <iostream>
#include <stdexcept>
class E{
public:
E(int n):m_n(n)
{
if (0>n)
{
throw std::logic_error("5");
}
}
~E(){cout << m_n << "#" <<endl;}
public :
int m_n;
};
int main()
{
try{
E a(5);
try{
E c(7);
E b(-8);
E d(9);
}
catch(const std::exception &e)
{
cout <<2 <<"&&&"<<e.what()<<endl;
throw e;
}
}
catch(const std::exception &e)
{
cout <<3 << "^^^^^ "<<e.what() << endl;
throw e;
}
return 0;
}
Выход меня есть:
7#
2&&&5
5#
3^^^^^ St9exception
std::exception: St9exception
Aborted.
Может кто-нибудь, пожалуйста, объясните, почему такой вывод? Я ожидаю, что первые 5 # будут отображаться.
Отметьте код, и вы увидите его почти мгновенно. – StoryTeller
Орден разрушения - это противоположность творения. – PlasmaHH
Почему SO избавился от «слишком локализованного» закрытого голосования? Кажется, здесь несколько уместно – stijn