我需要在下面的代码中处理任何错误情况吗?

时间:2017-07-03 06:22:02

标签: c++ file error-handling

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

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

2.在I / O操作上读/写错误,

3.例外安全。

如果是,我该怎么办呢?如果没有,是否安全?

char command[150]={0};

 sprintf(command, "/mypath/mycommand > %s", FileName);

 system(command);

2 个答案:

答案 0 :(得分:2)

如果FileName是looooooooooooong,那么

command可能会溢出。 system(3)错误时返回-1

请参阅man 3 system

  

错误时返回的值为-1(例如fork(2)失败),以及   否则返回命令的状态。后者的返回状态是   以wait(2)中指定的格式。因此,命令的退出代码   将是WEXITSTATUS(状态)。如果无法执行/ bin / sh,   退出状态将是退出(127)的命令。

     

如果command的值为NULL,则system()如果是shell则返回非零值   是可用的,如果没有则为零。

     

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

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

答案 1 :(得分:0)

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

如果是您的代码,我会提出相同的建议:忽略代码的错误代码是否总是安全的?如果代码遇到错误,是否有任何特定的操作?查看您的代码,我认为可能出现的问题很少(用户删除/移动/重命名mycommand,其执行权限已更改等)。这些会影响你的其他程序吗?