C语言下的错误处理的问题
下面是三种C语言的错误处理,你喜欢哪一种?还是都不喜欢?
/ 问题: 不充分,而且很容易出错,前面成功分配的资源,后面出错需要帮助释放 /
int foo(int bar)
{
int return_value = 0;
int doing_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 );
}
return return_value;
}
/ 问题: 使用goto语句是很不好的 /
int foo(int bar)
{
if (!do_something( bar )) {
goto error;
}
if (!init_stuff( bar )) {
goto error;
}
if (!prepare_stuff( bar )) {
goto error;
}
return do_the_thing( bar );
error:
return 0;
}
/ 问题:太多的if嵌套了,无法阅读 /
int foo(int bar)
{
int return_value = 0;
if (do_something( bar )) {
if (init_stuff( bar )) {
if (prepare_stuff( bar )) {
return_value = do_the_thing( bar );
}
}
}
return return_value;
}
转载于酷壳CoolShell 无删改 仅以此纪念陈皓(左耳朵耗子)
需要私有化部署,支持 markdown,并且可以直接生成链接分享给对方,求大佬推荐下 www.planetable.xyz/ 左侧的每个笔记本可以生成一个 IPNS 地址…
看到腾讯云、阿里云、华为云的短信服务被整得那么惨,一直都认为这是上面三大电信运营商在调整,所以下面哪家服务商都一样惨。上周通过邮件给用户推送了一份关于最近短信不可靠的说明,一家…
朋友送的一台双路 e5 ,128g 内存,现在系统 win10 ,能否 vmware 装个软路由,和群晖,或者还有什么好玩的玩法么 能 vmware 很强大 啥都能弄…… 不…