建構子的初始化Exception

  1. 建構子的初始化Exception

建構子的初始化Exception

原文連結: https://darkblack01.blogspot.com/2014/06/exception.html
移植時的最後更新日期: 2015-12-23T14:16:57.710+08:00

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

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!!!