C++ C++;:读取文件时错误处理(无例外)的最佳实践是什么

C++ C++;:读取文件时错误处理(无例外)的最佳实践是什么,c++,error-handling,std,fstream,C++,Error Handling,Std,Fstream,考虑下面的例子。我打开文件并读取前100个字节 std::ifstream fileRead; fileRead.open("file.txt", std::ios::binary); std::vector<char> buffer(100); fileRead.read(buffer.data(), 100); std::ifstream fileRead; fileRead.open(“file.txt”,std::ios::binary); std::向量缓冲器(100);

考虑下面的例子。我打开文件并读取前100个字节

std::ifstream fileRead;
fileRead.open("file.txt", std::ios::binary);
std::vector<char> buffer(100);
fileRead.read(buffer.data(), 100);
std::ifstream fileRead;
fileRead.open(“file.txt”,std::ios::binary);
std::向量缓冲器(100);
fileRead.read(buffer.data(),100);

您能建议在读取文件时处理所有可能的错误而不使用异常的最佳做法吗?

您需要知道您担心哪些错误,特别是您希望处理哪些错误并继续,而不是希望在遇到错误时终止

例如,您可能会遇到一个错误:如果文件不存在(或者您没有权限/访问它),该怎么办?这张支票很容易:

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";
    }
}
std::ifstream fileRead(“file.txt”,std::ios::binary);
如果(!fileRead){/*文件不存在!我们该怎么办?*/}
否则{
std::向量缓冲器(100);
fileRead.read(buffer.data(),100);
如果(!fileRead){

STD::是的:阅读C++书,它解释了如何从文件读取时正确地检查错误。