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 无删改 仅以此纪念陈皓(左耳朵耗子)
一、项目背景 自 2019 年以来,ipv6.ddnspod.com 已经稳定运行 5 年整了,本来是自用的一个小项目,主要用来获取联网设备外网 ipv6 地址,功能非常简单,…
最早的时候部署 php 可以用 deployer 。 现在用的 go ,打包什么的可以用.goreleaser 解决。但是上传部署不知道有什么方便的工具么。最好工具可以本地操作…
大伙看看我这样的需求可以关注什么样的产品或者方案。 我需要的(优先级从高到低排列) 能耗相对较低, 风扇不吵,电表不飙 比较能折腾的 市场流动性相对较好,方便玩腻了出手 我…