我正在尝试在 C++ 中尝试、捕获、抛出语句进行文件处理,并且我编写了一个虚拟代码来捕获所有错误。我的问题是为了检查我是否正确,我需要发生错误。现在我可以轻松检查infile.fail()
只需不在目录中创建所需名称的文件即可。但我怎样才能检查同样的情况outfile.fail()
(outfile
is ofstream
然而infile
is ifstream
)。在这种情况下,值将是outfile.fail()
是真实的?
示例代码[来自对unapersson答案的评论,经过简化以使问题更清晰-zack]:
#include <fstream>
using std::ofstream;
int main()
{
ofstream outfile;
outfile.open("test.txt");
if (outfile.fail())
// do something......
else
// do something else.....
return 0;
}
The open(2) http://linux.die.net/man/2/openLinux 上的手册页大约有 30 个条件。一些有趣的是:
- 如果该文件存在并且您无权写入它。
- 如果该文件不存在,并且您没有(在目录上)创建它的权限。
- 如果您没有某些父目录的搜索权限。
- 如果您传递的是虚假信息
char*
为文件名。
- 如果在打开设备文件时按 CTRL-C。
- 如果内核在解析名称时遇到太多符号链接。
- 如果您尝试打开一个目录进行写入。
- 如果路径名太长。
- 如果您的进程已经打开了太多文件。
- 如果系统已经打开了太多文件。
- 如果路径名指向一个设备文件,而系统中不存在该设备。
- 如果内核内存不足。
- 如果文件系统已满。
- 如果路径名的组成部分不是目录。
- 如果文件位于只读文件系统上。
- 如果该文件是当前正在执行的可执行文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)