2014-08-27 43 views
0

的代碼如下:如何處理RAII中的bad_alloc?

class A; 
shared_ptr<A> aPtr(new A()); 
//do something with aPtr. 

如果新拋出一個bad_alloc異常,發生了什麼給智能點APTR?我是否需要與aPtr做一些檢查,以及如何操作?我知道其中一個Google C++程序規則從不使用異常,但它們如何處理像bad_alloc這樣的異常?謝謝你的回覆。

回答

0

如果你得到一個bad_alloc無論如何,你是非常擰。我不確定您希望如何處理分配失敗。在這種情況下,不使用異常並不適用。

如果你真的選擇退出它,你可以一個nothrow添加到語句,它會返回nullptr而不是拋出一個bad_alloc的:

shared_ptr<A> aPtr(new (std::nothrow) A()); 

欲瞭解更多信息,請參閱this question關於設計涉及的考慮。另請參閱this question解釋爲什麼使用std::nothrow是一個壞主意。

+0

非常感謝。它確實有幫助。 – 2014-08-28 14:24:30