Обработка исключений и открытие файла?
Можно ли использовать исключения с открытием файла в качестве альтернативы использованию .is_open()
?
Например:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
Если да, то какой тип someException
?
Ответы
Ответ 1
http://en.cppreference.com/w/cpp/io/basic_ios/exceptions
// ios::exceptions
#include <iostream>
#include <fstream>
using namespace std;
int main () {
ifstream file;
file.exceptions ( ifstream::failbit | ifstream::badbit );
try {
file.open ("test.txt");
while (!file.eof()) file.get();
}
catch (const ifstream::failure& e) {
cout << "Exception opening/reading file";
}
file.close();
return 0;
}
РЕДАКТИРОВАТЬ: исключение catch с помощью ссылки const 2145147
Ответ 2
Из статьи cppreference.com на std::ios::exceptions
При сбое устанавливается флаг сбоя (который может быть проверен при сбое члена), и в зависимости от значения, установленного с исключениями, может быть выбрано исключение.
Ответ 3
Я думаю, что оператор while (!file.eof())
не должен находиться в области try
.