如果一个程序试图使用我的文件读取类访问不存在的文件的一部分(即在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.
}
类的用户可以这样做:
for (std::streampos Pos = 0; Pos < MyFile.GetCharCount(); Pos++)
{
char Character = MyFile.GetChar(Pos);
// Do stuff with Character.
}
看我的编辑;在这种情况下,EOF标志没有意义。 – Maxpm 2011-03-30 17:18:31
@Maxpm:那更像是你有一个'char'数组,是吧?那么你有一些可能性:只要不允许它,抛出一个异常,就像你最初的建议一样,在这种情况下'out_of_range'更适合,或者只是返回'EOF'字符。或者甚至可能只是返回数组中的最后一个字符。 – Xeo 2011-03-30 17:22:06