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 :
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;
	}
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 ?

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.