C 检查 NULL 和错误处理

标签 c error-handling

我有对字符串执行操作的函数。例如,String *concat(s1, s2); 这将转换 s1+s2 并返回一个新的字符串。

我想另一个用户可以向我发送 NULL 参数。 我可以检查 NULL。

if(s1 == NULL || s2 == NULL)
  return NULL;

并且只返回 NULL。

或者我可以使用以下命令退出整个程序:

exit(EXIT_FAILURE);

我认为解决该问题的最佳方法是退出该函数并且不返回任何内容。但是,如果我的用户正在等待字符串而我只是返回,他不会崩溃并烧毁吗?我还觉得打印给用户是个坏主意。

我很想找到一种方法来退出该函数,并在任何情况下都允许程序继续执行。

最佳答案

由于 C 没有异常,因此您必须在返回值中发出错误条件信号。虽然在这种情况下,为无效输入返回 NULL 听起来是一个不错的选择,但您可以更改设计,以便可以返回错误代码和连接的字符串:使函数接受三个参数,其中一个是输出参数。

int concat(string s1, string s2, string *out)

如果出现错误,该函数将返回错误代码,否则将结果写入输出参数。

关于C 检查 NULL 和错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18930251/

相关文章:

javascript - xml2js 是否保证同步并且会抛出错误?

java - on-redelivery-attempts-exceeded 回滚异常策略中丢失原始异常消息

php - 处理来自Symfony应用程序的MySQL错误

asp.net - 如何通过电子邮件向ASP.NET错误发送电子邮件

c - 信息隐藏如何阻止函数访问单个数组元素?

c - 请求不是结构或 union 的成员

c - 在 C 中解析 IRC PRIVMSG

C 程序错误 "Conflicting types for ' 函数'"

c - 为什么这不像其他程序那样生成垃圾值?

r - if(any(co)){: missing value where TRUE/FALSE needed In addition: Warning messages: 1: In FUN(newX[, i], …) : NAs introduced by coercion