一月 10, 2007

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

如果只需捕获“…”部分的异常,如:

try
{
    TryCode();
}
catch(…)
{
    CatchCode(parms);
    throw;
}

可以改写成:

struct Janitor
{
    Janitor(Parms p) : pa(p) {};
    ~Janitor() {if uncaught_exception() CatchCode(pa); }
    Parms pa;
};

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

另:异常安全需要多多研究。

没有评论 »

还没有评论。

RSS方式的评论。 TrackBack URI

发表评论

提示:如果你刚刚提交过评论,但是还没有被显示出来,请点击这里刷新一下: 刷新评论