例外没有影响价值

时间:2016-05-20 16:44:59

标签: c++ exception

这是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.因此异常没有改变该值。任何人都可以解释原因吗?

1 个答案:

答案 0 :(得分:3)

奇怪的投掷双打作为例外。

无论如何 - 你有一个外x和内x。内心是被抓住的人。这将捕获值3.14,将其加倍到6.28并打印出来。外层将保持不变。

所以最后的cout会增加外部x(值为1)并打印出来(2)