我正在学习C ++异常,我希望对该方案有一些澄清:
T function() throw(std::exception);
...
T t = value;
try { t = function(); }
catch (...) {}
如果抛出异常,变量t的状态是什么? 未定或未定义?
答案 0 :(得分:6)
不是那么简单。 catch子句还将捕获赋值运算符为t对象类引发的异常。可以部分分配t对象。永远不要抓住所有例外并假设最可能发生的事情。
答案 1 :(得分:3)
t
,因为在分配之前抛出了异常。该函数必须返回要设置的t
的值。
答案 2 :(得分:3)
不变。在t
返回值之前无法分配function()
,function()
永远不会正常返回