可能有重复:
C++中异常对象的作用域
我有以下的异常捕获语句:
catch(Widget w);
catch(Widget& w);
void passAndThrowWidget() {
Widget localWidget;
throw localWidget;
}
如果我们按值捕获Widget对象,编译器会进行复制,因此当我们抛出异常时,localWidget超出范围,我们不会遇到任何问题。
如果我们通过引用捕获widget对象,则根据引用概念,“w”指向同一本地Widget而不是副本。但我看到大多数异常在C ++中通过引用捕获。我的问题是,当抛出异常并通过引用捕获指向被销毁的对象时,“localWidget”如何工作?
谢谢!
return w;
也算是一个异常吗? - Luc Danton