【发布时间】:2016-04-20 08:55:37
【问题描述】:
来自这个答案https://stackoverflow.com/a/36738405/4523099:
没有操作数的 throw 表达式重新抛出当前处理的 例外。使用现有临时重新激活异常; 没有创建新的临时异常对象。 -- ISO/IEC 14882:2011 第 15.1 节。 8
那么为什么我会从这段代码中得到这个结果呢?
代码:
#include <iostream>
class my_exception: public std::exception{
public:
int value;
};
int main()
{
my_exception ex;
ex.value=1;
try{
throw ex;
}
catch(my_exception& e){
e.value=2;
}
std::cout << ex.value;
return 0;
}
实际结果:
1
我认为应该是 2,具体取决于标准配额。我错过了什么?
【问题讨论】:
-
“没有操作数的 throw 表达式” 是
throw;(在 catch 块中)。