Robin Chow's C++ Blog

 

[导入]Exceptional C++ 之 5

异常安全是指代码能够自己处理异常,即出现异常时仍能正常工作;异常中立是指代码将所有异常都转给调用者。

如果只需捕获“...”部分的异常,如:
try {TryCode();} catch(...) {CatchCode(parms); throw;}

可以改写成:
struct Janitor{
    Janitor(Parms p) : pa(p) {};
    ~Janitor() {if uncaught_exception() CatchCode(pa); }
    Parms pa;
};

在try代码之前创建一个Janitor对象,如果抛出异常,那么将执行CatchCode函数。

另:异常安全需要多多研究。
文章来源:http://my.donews.com/robinchow/2007/01/10/esmxouitpvwdhegigrvhvlffqxlbvsrzkdwz/

posted on 2007-10-23 21:01 Robin Chow 阅读(232) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜