2016-11-10 6 views
-3

次の例を考えてみましょう。私はファイルを開き、最初の100バイトを読みます。C++:ファイルを読み取っている間にエラー処理(例外なし)のベストプラクティスは何ですか

std::ifstream fileRead; 
fileRead.open("file.txt", std::ios::binary); 
std::vector<char> buffer(100); 
fileRead.read(buffer.data(), 100); 

あなたは例外を使用せずにファイルを読み込み中にすべての可能なエラーを処理するためのベストプラクティスを提案することはできますか?

+1

はい:C++の本を読んでください。これは、ファイルから読み込むときにエラーを正しくチェックする方法を説明しています。 –

答えて

1

あなたが心配しているエラー、特に処理したいエラー+継続していること、発生したときに終了したいエラーを知る必要があります。

たとえば、1つのエラーが発生する可能性があります。ファイルが存在しない場合(またはアクセス権/アクセス権がない場合)はどうなりますか?このチェックは簡単です:

std::ifstream fileRead("file.txt", std::ios::binary); 
if(!fileRead) {/*File doesn't exist! What do we do?*/}; 

ファイルが100バイトではない場合はどうなりますか?

std::ifstream fileRead("file.txt", std::ios::binary); 
if(!fileRead) {/*File doesn't exist! What do we do?*/} 
else { 
    std::vector<char> buffer(100); 
    fileRead.read(buffer.data(), 100); 
    if(!fileRead) { 
     std::cout << "Only " << fileRead.gcount() << " bytes could be read.\n"; 
    } 
} 

あなたが提供したコードについては、エラー処理のための唯一のエラーです。この例に関連する他のコードがある場合は、エラー処理をさらに拡張する必要があります。

これらの例では、例外処理を使用していないことに注意してください.C++ iostreamsライブラリは例外処理を行わずにエラー処理を行います。

関連する問題