1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| // aucune gestion de l'exception
void foo()
{
MaClass c(123456789);
}
// renvoi d'une exception plus précise
void bar()
{
try
{
MaClass(c123456789)
}
catch(std::bad_alloc & e)
{
throw ErreurDinitialisation(123456789);
}
}
// gestion (au minimum) partielle du problème et renvoi d'une exception
void foobar()
{
try
{
bar();
}
catch(ErreurDinitialisation &e )
{
/* 1- correction de ce que l'on peut
* 2- renvoi de l'exception pour la suite du traitement
*/
throw e;
}
}
/* gestion "finale" du problème */
void doSomething()
{
try
{
foobar();
}
catch(ErreurDinitialisation &e)
{
/*gestion du problème, mais aucune exception n'est relancée */
}
/* on continue l'exécution "comme si de rien n'était */
} |
Partager