Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12034
  • 博文数量: 3
  • 博客积分: 165
  • 博客等级: 入伍新兵
  • 技术积分: 52
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-08 08:16
文章分类
文章存档

2012年(3)

我的朋友

分类: LINUX

2012-11-13 19:03:02

驱动中多使用goto来做错误处理,这样能比较好地的资源进行回收。
如果函数中有多个可能失败的语句,并且有资源要进行回收,使用goto去做错误处理是一种比较方便地做法。
在执行一条可能会失败的语句时,如果失败了就goto xxx_err;
在函数尾加上xxx_err: 标记并在xxx_err:上清除当前申请的资源,方便后面的错误处理。

例如:

    fd1 = open();
    if(fd1 < 0)
    {
        //err
        goto fd1_open_err;
    }
    
    fd2 = open();
    if(fd2 < 0)
    {
        //err
        goto fd2_open_err;
    }
    
    fd3 = open();
    if(fd3 < 0)
    {
        //err
        goto fd3_open_err;
    }
    ...
    
    return 0;
    
        close(fd3); //习惯性把每个的资源清理写上,即使用不上
    fd3_open_err:
        close(fd2);
    fd2_open_err;:     
        close(fd1);
    fd1_open_err:
        return -1;
阅读(1153) | 评论(0) | 转发(2) |
0

上一篇:没有了

下一篇:Project Euler.开始

给主人留下些什么吧!~~