Lancer et capturer la bonne exception avec fopen
Bonjour,
j'essaie de lancer et capturer la bonne exception en enveloppant un code C qui appelle fopen.
Concrètement, j'ai une classe pour gérer un type de fichier, disons File (admettant pour donnée membre un pointeur sur FILE nommé content_) dont le constructeur s'écrit
Code:
1 2 3 4 5 6
| File::File(std::string const & filename)
: content_(fopen(filename.c_str(), "r"))
{
if(!content_)
throw new std::ios_base::failure("Unable to open the specified file");
} |
Je fais appel à ce constructeur pour un fichier n'existant pas, en tentant de capturer l'exception que je lance dans le constructeur :
Code:
1 2 3 4 5 6 7 8
| try
{
File * does_not_exist = new File("Does not exist");
}
catch(std::ios_base::failue const & e)
{
std::cout << e.what() << std::endl;
} |
Malheureusement, je n'attrape pas l'exception avec cette ligne de code.
En revanche, si je remplace mon appel à catch par catch(...), une exception est bien attrapée.
Est-ce que vous sauriez pourquoi?
EDIT : cela ne fonctionne pas non plus si j'essaie d'attraper une instance de std::exception.
Merci!