我有一個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