抛出异常后的LHS状态

时间:2010-04-18 00:41:32

标签: c++ exception

我正在学习C ++异常,我希望对该方案有一些澄清:

T function() throw(std::exception);
...
T t = value;
try { t = function(); }
catch (...) {}

如果抛出异常,变量t的状态是什么? 未定或未定义?

3 个答案:

答案 0 :(得分:6)

不是那么简单。 catch子句还将捕获赋值运算符为t对象类引发的异常。可以部分分配t对象。永远不要抓住所有例外并假设最可能发生的事情。

答案 1 :(得分:3)

未设置

t,因为在分配之前抛出了异常。该函数必须返回要设置的t的值。

答案 2 :(得分:3)

不变。在t返回值之前无法分配function()function()永远不会正常返回