Exercice 141
Énoncé
1. Quels résultats fournira ce programme :
#include
using namespace std ;
main()
{ void f() ;
try
{ f() ;
}
catch (int n)
{ cout << "except int dans main : " << n << "\n" ;
}
catch (...)
{ cout << "exception autre que int dans main \n" ;
}
cout << "fin main\n" ;
}
void f()
{
try
{ int n=1 ; throw n ;
}
catch (int n)
{ cout << "except int dans f : " << n << "\n" ;
throw ;
}
}
2. Même question si l’on remplace la fonction f par :
void f()
{
try
{ float x=2.5 ; throw x ;
}
catch (int n)
{ cout << "except int dans f : " << n << "\n" ;
throw ;
}
}
1.
except int dans f : 1
except int dans main : 1
fin main
L’exception de type int levée dans f est traitée par le gestionnaire catch(int)
correspondant. Elle est retransmise à un bloc englobant par throw, donc traitée par le
344
Énoncé
1. Quels résultats fournira ce programme :
#include
using namespace std ;
main()
{ void f() ;
try
{ f() ;
}
catch (int n)
{ cout << "except int dans main : " << n << "\n" ;
}
catch (...)
{ cout << "exception autre que int dans main \n" ;
}
cout << "fin main\n" ;
}
void f()
{
try
{ int n=1 ; throw n ;
}
catch (int n)
{ cout << "except int dans f : " << n << "\n" ;
throw ;
}
}
2. Même question si l’on remplace la fonction f par :
void f()
{
try
{ float x=2.5 ; throw x ;
}
catch (int n)
{ cout << "except int dans f : " << n << "\n" ;
throw ;
}
}
1.
except int dans f : 1
except int dans main : 1
fin main
L’exception de type int levée dans f est traitée par le gestionnaire catch(int)
correspondant. Elle est retransmise à un bloc englobant par throw, donc traitée par le
344
