J'ai un code try-catch imbriqué comme ci-dessous :
void A()
{
try
{
//Code like A = string(NULL) that throws an exception
}
catch(std::exception& ex)
{
cout<<"in A : " << ex.what();
throw ex;
}
}
void B()
{
try
{
A();
}
catch(std::exception& ex)
{
cout<<"in B : " << ex.what();
}
}
Après avoir exécuté cette opération, j'ai obtenu ce résultat :
in A: basic_string::_M_construct null not valid
in B: std::exception
Comme vous pouvez le voir, ex.what()
fonctionne bien dans la fonction A et me donne la description correcte, mais dans B ex.what()
me dit juste std::exception
. Pourquoi cela se produit-il ?
Est-ce que je lance quelque chose de différent ou de faux dans la clause catch de la fonction A ? Comment puis-je lancer une exception imbriquée afin d'obtenir la description exacte de l'exception dans B ?