【发布时间】:2017-12-06 07:56:42
【问题描述】:
我的代码如下写入文件。我需要担心任何错误情况吗? 我需要处理以下错误情况吗?
1.i/o操作逻辑错误,
2.i/o操作读写错误,
3.异常安全。
如果是,我该怎么做,如果不是,它安全吗?
char command[150]={0};
sprintf(command, "/mypath/mycommand > %s", FileName);
system(command);
【问题讨论】:
-
是的,如果您调用可能失败的函数,您应该始终检查错误。但是(对于这种情况,使用
system)除非您尝试运行的命令针对命令本身中的特定错误返回特定错误代码,否则您将只知道该命令是否运行。它本身不是 C++ 函数,因此不会抛出异常。 -
另外,
sprintf函数理论上也可能失败。很少有人从中检查错误,甚至没有经验丰富的程序员。我确实建议使用snprintf代替,以减少缓冲区溢出的风险。或使用std::ostringstream。 -
第一个您可以检查文件本身是否存在。其次,在 I/O 操作期间必须进行异常处理。但是你必须自己做工作。我们可以提供指点,但您能否完成本应由您完成的工作。
-
是的,我正在检查系统调用的返回值,但我更想知道该文件
标签: c++ file error-handling