我是否需要处理以下代码中的任何错误情况?

Do I need to handle any error cases in my code below?

本文关键字:任何 错误 情况 代码 是否 处理      更新时间:2023-10-16

我的代码写入文件如下。我需要担心任何错误情况吗? 我是否需要处理以下错误情况?

1.I/O操作出现逻辑错误,

2.I/O操作出现读/写错误,

3.异常安全。

如果是,我该怎么做,如果不是,安全吗?

char command[150]={0};
sprintf(command, "/mypath/mycommand > %s", FileName);
system(command);

如果文件名是looooooong,command可能会溢出。错误时system(3)返回 -1

man 3 system

返回的值在错误时为 -1(例如 分叉(2( 失败(,并且 否则返回命令的状态。 后一种返回状态是 采用 wait(2( 中指定的格式。 因此,命令的退出代码 将为 WEXITSTATUS(status(。 如果无法执行/bin/sh, 退出状态将是执行 exit(127( 的命令的状态。

如果命令的值为 NULL,则 system(( 返回非零值,如果 shell 可用,如果不可用,则为零。

system(( 不会影响任何其他子项的等待状态。

如果发生错误,也许应该删除输出文件。

我遵循的一般经验法则是墨菲定律:任何可能出错的东西最终都会出错。考虑到这一点,我总是检查错误和异常,除非有很好的理由认为检查错误是不必要的或多余的。但是,这些情况也大多保持在最低限度。

对于您的代码,我会提出相同的建议:忽略代码的错误代码是否总是安全的?如果代码遇到错误,是否有任何特定操作要执行?看看你的代码,我相信很少有事情可能会出错(mycommand被用户删除/移动/重命名,其执行权限被更改等(。这些会影响程序的其余部分吗?