用C在我的功能,我应该怎么返回错误?
-
19-09-2019 - |
题
目前我返回-1在我的自定义功能在C如果出现不和0成功。例如,正与一个链表和一些功能需要一个非空列表正常工作。如果作为参数传递的列表是空的,我返回-1(错误)和0,如果它不是空的,功能没有问题的工作。
应该I,也许,返回1而不是-1?
这是用C做事的标准方法或者你推荐一种不同的方法?
解决方案
返回一个非零值,以指示故障。这样,你可以写你的函数的调用像这样:
if(func_call())
{
doErrorHandling();
}
此惯例将允许您使用任何!0
值,以指示一个特定的错误,而这将允许你以均匀方式使用一个可变的。因此,在上面的例子中所示的if
的身体可以然后有一个switch语句来处理特定错误。
您可以采取不同的方式 - 但如果你选择这样做,坚持一个约定 - 在Win32 API(和其他API的我都用过)混合和匹配约定不幸
。其他提示
这听起来不错。 -1 I / O功能的使用,因为正回报值通常表示成功,是已处理的字节数。如果你有多种方式的功能可以去错了,那么你就可以返回不同的整数或设置一个全局错误变量(错误使用标准库)包含错误代码。
在风格上,我宁愿不返回状态代码,因为这意味着我的功能不能(干净)返回其他任何东西。相反,我会调用该函数前检查输入。但这是主观的,取决于上下文。
我建议你找到一种方法在误差,所有的信息仍然是可用的点格式化完全翔实可读的字符串的,并设计一种方式来获得下来直通该计划的其余部分,通用户,他的手机,你的开发团队进行分析。
这在我看来,像任何设计的一个重要特征,如果你想更快地生产出更好的软件。杀死在路上的错误信息是一个重大的犯罪,C语言是没有任何借口。
有许多方案 - 但不管你做什么,做到这一点始终
如果你没有很多失败的情况下,只是错误使用0。这是因为错误的测试都写在一个简单的方法:
if (!list_insert(...)) { handle_error; }
否则低于零的答案是好与正常答案> = 0可以使用该像列表长度,这在正常情况下不会是负的功能一起使用。或者,如果你想许多的错误代码(-1 - 不存在的,-2 - 没有发现,-3 ... ...)