前段時間我在SO question中看到了特有的語法。這個語法的含義是什麼?
class B{
A a;
public:
B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
這個try-catch-block函數的含義是什麼?
前段時間我在SO question中看到了特有的語法。這個語法的含義是什麼?
class B{
A a;
public:
B() try : a() {} catch(string& s) { cout << &s << " " << s << endl; };
};
這個try-catch-block函數的含義是什麼?
這是函數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
}
末端示例]
它惹人創建成員對象時從一個構造拋出的異常。您提到的問題的答案之一包含解釋詳細信息的鏈接:http://www.gotw.ca/gotw/066.htm。
請參閱http://www.drdobbs.com/introduction-to-function-try-blocks/184401297以獲得更深入的解釋和理由。 – pmr 2012-07-20 09:14:23
哇..從來沒有見過之前...謝謝你的回覆 – PermanentGuest 2012-07-20 09:28:46
@PermanentGuest這個功能很少使用,因爲在你的catch塊異常結束時會重新拋出異常,如果你不拋出其他異常。函數嘗試塊不能接受異常。 – ForEveR 2012-07-20 09:32:47