异常不影响值

exception didn't influence value

本文关键字:影响 异常      更新时间:2023-10-16

这是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。因此,异常不会更改值。谁能解释一下原因?

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

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

因此,最终cout将递增外部x(值为 1)并打印该 (2)