当前位置: 代码迷 >> C语言 >> C语言下的错误处理的问题
  详细解决方案

C语言下的错误处理的问题

热度:1117   发布时间:2014-03-11 23:53:16.0

下面是三种C语言的错误处理,你喜欢哪一种?还是都不喜欢?

/* 问题: 不充分,而且很容易出错,前面成功分配的资源,后面出错需要帮助释放 */
intfoo(intbar)
{
        intreturn_value = 0;
        intdoing_okay = 1;
        doing_okay = do_something( bar );
        if(doing_okay)
        {
                doing_okay = init_stuff();
        }
        if(doing_okay)
        {
                doing_okay = prepare_stuff();
        }
        if(doing_okay)
        {
                return_value = do_the_thing( bar );
        }
        returnreturn_value;
}

/* 问题: 使用goto语句是很不好的 */
intfoo(intbar)
{
        if(!do_something( bar )) {
                gotoerror;
        }
        if(!init_stuff( bar )) {
                gotoerror;
        }
        if(!prepare_stuff( bar )) {
                gotoerror;
        }
        returndo_the_thing( bar );
error:
        return0;
}
/* 问题:太多的if嵌套了,无法阅读 */
intfoo(intbar)
{
        intreturn_value = 0;
        if(do_something( bar )) {
                if(init_stuff( bar )) {
                        if(prepare_stuff( bar )) {
                                return_value = do_the_thing( bar );
                         }
                }
        }
        returnreturn_value;
}