当涉及到在C库中以一致的方式处理错误时,您认为什么是“最佳实践”?
我一直在想两种方式:
始终返回错误代码。典型的函数如下所示:
MYAPI_ERROR getObjectSize(MYAPIHandle h, int* returnedSize);
始终提供错误指针方法:
int getObjectSize(MYAPIHandle h, MYAPI_ERROR* returnedError);
当使用第一种方法时,可以像这样编写代码,其中错误处理检查直接放在函数调用上:
int size;
if(getObjectSize(h, &size) != MYAPI_SUCCESS) {
// Error handling
}
这看起来比这里的错误处理代码要好。
MYAPIError error;
int size;
size = getObjectSize(h, &error);
if(error != MYAPI_SUCCESS) {
// Error handling
}
但是,我认为使用返回值来返回数据会使代码更具可读性,很明显,在第二个示例中向size变量中写入了一些内容。
你有什么想法,为什么我应该更喜欢这些方法中的任何一种,或者混合使用它们或使用其他方法?我不是全局错误状态的粉丝,因为它往往会使多线程使用库的方式更加痛苦。
编辑: C++关于这方面的具体想法也会很有趣,只要它们不涉及异常,因为这不是我目前的选择……
https://stackoverflow.com/questions/385975
复制相似问题