Подтвердить что ты не робот

Обработка исключений и открытие файла?

Можно ли использовать исключения с открытием файла в качестве альтернативы использованию .is_open()?

Например:

ifstream input;

try{
  input.open("somefile.txt");
}catch(someException){
  //Catch exception here
}

Если да, то какой тип someException?

4b9b3361

Ответ 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.