У меня есть вложенный код try-catch, как показано ниже:
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();
}
}
После этого я получил этот результат:
in A: basic_string::_M_construct null not valid
in B: std::exception
Как вы можете видеть, ex.what()
работает нормально в функции A и скажет мне правильное описание, но в B ex.what()
мне просто говорит std::exception
. Почему это происходит?
Я бросаю что-то другое или неправильное в предложение catch функции A? Как мне вставить вложенное исключение, чтобы я мог получить точное описание исключения в B?