文件的异常处理

Max*_*xpm 0 c++ exception file

如果程序试图使用我的文件读取类来访问不存在的文件的一部分(即,在ios_base :: end之后),应该抛出什么异常?

我打算使用std :: out_of_range,但现在我开始认为std :: runtime_error会更合适.

编辑:

该接口与标准fstream类的工作方式略有不同,因为它基于for循环而不是while循环.所以不要做以下事情:

while (MyFile.peek() != EOF)
{
    char Character = MyFile.get();
    // Do stuff with Character.
}
Run Code Online (Sandbox Code Playgroud)

该类的用户可以这样做:

for (std::streampos Pos = 0; Pos < MyFile.GetCharCount(); Pos++)
{
    char Character = MyFile.GetChar(Pos);
    // Do stuff with Character.
}
Run Code Online (Sandbox Code Playgroud)

Xeo*_*Xeo 5

不要抛出异常,像标准库那样做,并设置"文件结束"标志.如果事情真的超级意外发生了事情,那就抛出异常.