我有一个C++类,在构造函数失败时抛出一个异常。如何分配本类的本地实例(不使用new
)并处理任何可能的异常,同时保持try
块范围尽可能小?如何捕获构造函数异常?
从本质上讲,我找了C++相当于下面的Java成语:
boolean foo() {
Bar x;
try {
x = new Bar();
} catch (Exception e) {
return false;
}
x.doSomething();
return true;
}
我不想从x.doSomething()
捕获异常,仅构造。
我想我正在寻找的是一种方法来分开声明和x
的初始化。
是否有可能在不使用堆分配和指针的情况下完成此操作?
是的。将所有内容放在try块内的成功路径上。你会留在功能范围内。 – StoryTeller
@StoryTeller如果我不想从例如'x.doSomething()',只有构造函数的异常? –
@AndrewSun使用不同的异常,或将'x.doSomething()'放在内部异常块中。 – Holt