Est-il possible d'utiliser des exceptions avec l'ouverture de fichier plutôt que d'utiliser .is_open()
?
Par exemple:
ifstream input;
try{
input.open("somefile.txt");
}catch(someException){
//Catch exception here
}
Si oui, quel type est someException
?
http://fr.cppreference.com/w/cpp/io/basic_ios/exceptions
Lisez également cette réponse 11085151 qui fait référence à cette information 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;
}
Exemple de code exécuté sur Wandbox
EDIT: intercepte les exceptions par la référence const 2145147
EDIT: FailBit supprimé de l'ensemble des exceptions. Ajout d'URL pour de meilleures réponses.
De l'article de cppreference.com sur std::ios::exceptions
En cas d'échec, l'indicateur failbit est défini (ce qui peut être vérifié avec member fail) et, en fonction de la valeur définie avec les exceptions, une exception peut être levée.