c++中怎么实现Java中finally语句

所有学习c++的书籍都明确提出了,不要使用goto, 以免造成程序流程的混乱,使理解和调试程序都产生困难。

但是我们遇到这样一个场景怎么办:就是不管程序执行成功与否,都要执行一些资源释放语句,相当java中的finally语句。c++的中没有finally的支持,即使使用try catch,资源释放也需要写两次,执行成功一次,catch中一次。使用goto可以很优雅的实现了finally.

void fun()
{
    INT32 rc=OK;    
    rc=doSomeThing();
    check(rc);   //   if(rc!=OK) goto error;
    done:
      releaseSource(); //施放资源,done是一定要执行的语句快
        return rc;  
    error:
        goto done;
}

 

posted @ 2015-02-09 13:47  高兴的博客  阅读(627)  评论(0编辑  收藏  举报