如果一個程序試圖使用我的文件讀取類訪問不存在的文件的一部分(即在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