c++ - 错误处理语句是如何格式化的?

标签 c++ c error-handling

我有几个函数在遇到错误时返回 1。每个函数都调用较低级别的函数,这样如果较低级别的函数返回 1,则原始函数也返回 1。因此错误以这种方式向上传递。

这是其中一个函数的高度简化版本:

if (low_level_function()) {
    [do stuff]
    return 1;
}
[do other stuff]
return 0;

我是否应该声明一个错误变量,将 low_level_function() 的结果赋给它,然后在 if() 语句中使用错误变量?换句话说:

int error = low_level_function();
if (error) {
    [do stuff]
    return 1;
}
[do other stuff]
return 0;

或者还有其他更好的方法吗?我以前从未编写代码来解决错误,所以我在这里的经验相当有限。

编辑:我重新格式化了函数以更好地表达我的代码的性质。

最佳答案

首选第二种形式的一个原因是当您在错误情况下无事可做并且希望避免嵌套 if 语句的阶梯效应时。

int error_flag = low_level_function();
if (!error_flag)
    error_flag = second_function();
if (!error_flag)
    error_flag = third_function();
return error_flag;

当然,对于那个具体的例子,你可以通过使用 || 的短路属性来真正简化:

return low_level_function() || second_function() || third_function();

关于c++ - 错误处理语句是如何格式化的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10452006/

相关文章:

c++ - 从大括号初始化列表直接初始化中的复制省略

c++ - 将网络字节顺序(大端)转换为小端

asp-classic - 如何忽略从ASP调用的SQL Server 2000过程中嵌套存储过程中的错误

c++ - 如何使用包装器从 Swift 调用 C++ 函数并使用终端进行编译?

c++ - 更新屏幕以渲染相机位置

c - 通过指针访问会改变严格的别名语义吗?

c - AS3 两种算法的上次幂实现

c - 字符串使用的字符单元格数

python - “Rect argument is invalid”

python - 在Python中使用os.rename()时出现FileNotFoundError