異常安全是指代碼能夠自己處理異常,即出現(xiàn)異常時(shí)仍能正常工作;異常中立是指代碼將所有異常都轉(zhuǎn)給調(diào)用者。
如果只需捕獲“...”部分的異常,如:
try {TryCode();} catch(...) {CatchCode(parms); throw;}
可以改寫成:
struct Janitor{
Janitor(Parms p) : pa(p) {};
~Janitor() {if uncaught_exception() CatchCode(pa); }
Parms pa;
};
在try代碼之前創(chuàng)建一個(gè)Janitor對(duì)象,如果拋出異常,那么將執(zhí)行CatchCode函數(shù)。
另:異常安全需要多多研究。
文章來源:
http://my.donews.com/robinchow/2007/01/10/esmxouitpvwdhegigrvhvlffqxlbvsrzkdwz/