Bonjour,
j'ai beaucoup de mal à comprendre l'interet de lever une exception dans un constructeur comme c'est expliqué dans la faq.
En effet, le fait de lever une exception va terminer le programme, non ?
Par exemple, supposons un un truc du style dans un constructeur où on désire ouvrir un fichier pour lire son contenu :
Bon si je mets pas le throw dans le catch, je ne termine pas mon programme certes, mais qu'est ce que je fais de mon objet ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 try { if(fopen("un fichier qui n'existe pas", "rb") throw std::string( "fichier inexistant" ); } catch ( const std::string & Msg ) { std::cerr << Msg; throw; }
Et les exceptions dans un process 7/7 24/24 ? On ne va quand même pas l'arreter ? A mon avis (tant que je comprends pas plus ce mécanisme) il vaut mieux "tester avec des if" pour ne pas risquer l'interruption du prog, non ?
Merci de m'éclairer la-dessus.
Partager