Exercice 138
Énoncé
Soit la définition suivante des classes erreur et A :
class erreur
{ public :
int num ;
} ;
class A
{ public :
A(int n)
{ if (n==1) { erreur er ; er.num = 999 ; throw er ; }
}
} ;
1. Quels résultats fournira ce programme utilisant ces deux classes :
#include
using namespace std ;
main()
{ void f() ;
try
{ f() ;
}
catch (erreur er)
{ cout << "dans main : " << er.num << "\n" ;
}
cout << "suite main\n" ;
}
void f()
{ try
{ A a(1) ;
}
catch (erreur er)
{ cout << "dans f : " << er.num << "\n" ;
}
cout << "suite f\n" ;
}
2. Même question en remplaçant la définition de f par :
void f()
{ try
{ A a(1) ;
}
catch (erreur er)
{ cout << "dans f : " << er.num << "\n" ;
return ;
}
cout << "suite f\n" ;
}
3. Même question en remplaçant la définition de f par :
void f()
{ A a(1) ;
338
Énoncé
Soit la définition suivante des classes erreur et A :
class erreur
{ public :
int num ;
} ;
class A
{ public :
A(int n)
{ if (n==1) { erreur er ; er.num = 999 ; throw er ; }
}
} ;
1. Quels résultats fournira ce programme utilisant ces deux classes :
#include
using namespace std ;
main()
{ void f() ;
try
{ f() ;
}
catch (erreur er)
{ cout << "dans main : " << er.num << "\n" ;
}
cout << "suite main\n" ;
}
void f()
{ try
{ A a(1) ;
}
catch (erreur er)
{ cout << "dans f : " << er.num << "\n" ;
}
cout << "suite f\n" ;
}
2. Même question en remplaçant la définition de f par :
void f()
{ try
{ A a(1) ;
}
catch (erreur er)
{ cout << "dans f : " << er.num << "\n" ;
return ;
}
cout << "suite f\n" ;
}
3. Même question en remplaçant la définition de f par :
void f()
{ A a(1) ;
338
