2012-07-20 187 views

回答

10

這是函數try塊。在派生類的構造函數中只有在c-tors中捕獲錯誤纔有用。您可以在標準例如n3337草案參數文件中閱讀有關此功能的更多信息。 15,15.1。

4所述的功能試塊相關聯的處理程序-SEQ與 構造函數初始值設定,如果存在的話,和化合物語句。在執行復合語句期間或在構造函數和析構函數執行期間拋出的異常 分別在類的子對象的初始化或銷燬 的過程中將 控制轉移到函數嘗試塊中的處理函數在執行try-block轉移控制 到其他處理程序期間拋出異常。 [實施例:

int f(int); 
class C { 
int i; 
double d; 
public: 
C(int, double); 
}; 
C::C(int ii, double id) 
try : i(f(ii)), d(id) { 
// constructor statements 
} 
catch (...) { 
// handles exceptions thrown from the ctor-initializer 
// and from the constructor statements 
} 

末端示例]

+1

請參閱http://www.drdobbs.com/introduction-to-function-try-blocks/184401297以獲得更深入的解釋和理由。 – pmr 2012-07-20 09:14:23

+0

哇..從來沒有見過之前...謝謝你的回覆 – PermanentGuest 2012-07-20 09:28:46

+0

@PermanentGuest這個功能很少使用,因爲在你的catch塊異常結束時會重新拋出異常,如果你不拋出其他異常。函數嘗試塊不能接受異常。 – ForEveR 2012-07-20 09:32:47