相关疑难解决方法(0)

C代码中的错误处理

在C库中以一致的方式处理错误处理错误时,您认为"最佳实践"是什么?

我一直在考虑两种方式:

始终返回错误代码.典型的功能如下所示:

MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize);
Run Code Online (Sandbox Code Playgroud)

始终提供错误指针方法:

int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError);
Run Code Online (Sandbox Code Playgroud)

使用第一种方法时,可以编写这样的代码,其中错误处理检查直接放在函数调用上:

int size;
if(getObjectSize(h, &size) != MYAPI_SUCCESS) {
  // Error handling
}
Run Code Online (Sandbox Code Playgroud)

这看起来比错误处理代码更好.

MYAPIError error;
int size;
size = getObjectSize(h, &error);
if(error != MYAPI_SUCCESS) {
    // Error handling
}
Run Code Online (Sandbox Code Playgroud)

但是,我认为使用返回值返回数据会使代码更具可读性.很明显,在第二个示例中,某些内容被写入了size变量.

您对我为什么应该选择这些方法或者将它们混合或使用其他方法有任何想法吗?我不是全局错误状态的粉丝,因为它往往会使库的多线程使用更加痛苦.

编辑:只要他们不涉及异常,C++关于此的具体想法也会很有趣,因为目前我不能选择...

c error-handling

138
推荐指数
14
解决办法
9万
查看次数

我应该返回0或1以获得成功的功能吗?

可能重复:
C代码中的错误处理您应该在C中
使用失败的函数调用返回什么值?

我总是用0,但其没有真正可读if,while

我应该退回1吗?为什么主要功能return 0成功?

c boolean

50
推荐指数
2
解决办法
9万
查看次数

标签 统计

c ×2

boolean ×1

error-handling ×1