2014年6月24日 星期二

建構子的初始化Exception

開門見山,以這樣的類別為例:

class foo{
int i;
char c;
public:
foo(); //建構子
};
一般來說,我們的建構子都這樣寫
foo::foo()
:i(0), c(''){ <-- 建構初始列
}
但是,如果想在建構子上加try-catch,難道是這樣??
foo::foo()
:i(0), c(''){ <-- 建構初始列
try{
}
catch(...){
}
}
發現了嗎?那捕捉個屁呀?跟本就是把擸物放在網子外。
唷!不!所謂江湖一點訣!
在Primer C++中就有介紹,如果要捕捉到建構初始列上,初始化成員變數時的exception時,就一定要這樣寫
foo::foo()
try:i(0), c(''){ <-- 建構初始列

}catch(...)
{ }
這個名稱叫「function try block」

看到這,會想知道解構子怎麼處理嗎?

解構子.....基本上,絕對不可以出現exception!!!!

沒有留言:

張貼留言