建構子的初始化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!!!!

沒有留言:

張貼留言

(什麼是留言欄訊息?)