1 goto


bool foo(){
int *p = (int*)malloc(5*sizeof(int));
bool bOk = true;
//执行并处理错误
if(!fun1()) goto errorlable;
if(!fun2()) goto errorlable;
if(!fun3()) goto errorlable;
//......
//执行成功,释放资源并返回ture
free(p);
p = NULL;
return true;
//冗余部分的,错误返回代码
errorlable:
free(p);
p = NULL;
return false;

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

---------------------
作者:axushilong
来源:CSDN
原文:https://blog.csdn.net/axushilong/article/details/79651074
版权声明:本文为博主原创文章,转载请附上博文链接!

2.代替goto

bool foo(){
//分配资源
int *p = (int*)malloc(5*sizeof(int));
bool bOk = true;
//执行并处理错误
do{
bOk = fun1();
if(!bOk)break;
bOk = fun2();
if(!bOk)break;
bOk = fun3();
if(!bOk)break;
//......
}while(0);

//释放资源并返回bOk
free(p);
p = NULL;
return bOk;
}

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄