lenguaje - manejo de archivos en c++ fstream
¿Manejo de excepciones y apertura de un archivo? (3)
¿Es posible usar excepciones con la apertura de archivos como alternativa al uso de .is_open()
?
Por ejemplo:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
Si es así, ¿de qué tipo es someException
?
Creo que while (!file.eof())
declaración while (!file.eof())
no debería estar en el ámbito de try
.
Del artículo cppreference.com sobre std::ios::exceptions
En caso de falla, se establece el indicador de failbit (que se puede verificar con la falla del miembro), y dependiendo del valor establecido con excepciones, se puede lanzar una excepción.
en.cppreference.com/w/cpp/io/basic_ios/exceptions
Lea también esta respuesta 11085151 que hace referencia a este article
// ios::exceptions
#include <iostream>
#include <fstream>
using namespace std;
void do_something_with(char ch) {} // Process the character
int main () {
ifstream file;
file.exceptions ( ifstream::badbit ); // No need to check failbit
try {
file.open ("test.txt");
char ch;
while (file.get(ch)) do_something_with(ch);
// for line-oriented input use file.getline(s)
}
catch (const ifstream::failure& e) {
cout << "Exception opening/reading file";
}
file.close();
return 0;
}
Código de ejemplo que se ejecuta en Wandbox
EDITAR: captura excepciones por const referencia 2145147
EDITAR: eliminó el failbit del conjunto de excepciones. URLs agregadas para mejores respuestas.