为什么在捕获第一个异常后外部的 temp
变为空?
#include <iostream>
int main()
{
std::string temp("exception");
int value;
while(std::cin>> value && value != 0)
{
try{
if(value > 9) throw temp;
else std::cout << value << "\n";
}
catch(std::string temp)
{
std::cout << temp << "\n";
}
}
return 0;
}
输入:
1
2
11
13
输出:
1
2
exception
// Printing Empty string
预期输出:
1
2
exception
exception
我使用g++ 7.3.0编译我的代码。
clang 7
时,似乎一切正常且符合预期。在使用gcc 8
时可以重现问题,将temp
声明为const std::string temp("exception");
可以解决此问题。 - lubgr