这是MWE:
#include <iostream>
#include <exception>
using namespace std;
int main() {
double x=1;
try {
throw 3.14;
}
catch(double x) {
x *= 2;
cout << x<<endl;
}
cout << ++x;
return 0;
}
我期望x
将是7.28,但它显示2.因此异常没有改变该值。任何人都可以解释原因吗?
答案 0 :(得分:3)
奇怪的投掷双打作为例外。
无论如何 - 你有一个外x
和内x
。内心是被抓住的人。这将捕获值3.14,将其加倍到6.28并打印出来。外层将保持不变。
所以最后的cout
会增加外部x
(值为1)并打印出来(2)