void test1()
{
try
{
try
{
throw runtime_error("asdfasdf");
}
catch(std::exception &e)
{
throw e;
}
}
catch(std::runtime_error &e)
{
throw e;
}
catch(std::exception &e)
{
cout<<e.what()<<endl;
}
}
这段代码都有输出:
在vc2010里输出 仍然是 asdfasdf
但是mingw4.5.2里输出则是std::exception
当runtime_error 被扔出来的时候,exception& e接住了,但是 e再抛出的时候,因为已经是exception的异常了,所以只能被第三个catch接住.