Я пишу довольно простое приложение на C ++ с использованием g ++ под Linux, и я пытаюсь выбросить необработанные строки в качестве исключений (да, я знаю, это не очень хорошая практика).
У меня есть следующий код (упрощенный):
int main()
{
try
{
throw "not implemented";
}
catch(std::string &error)
{
cerr<<"Error: "<<error<<endl;
}
catch(char* error)
{
cerr<<"Error: "<<error<<endl;
}
catch(...)
{
cerr<<"Unknown error"<<endl;
}
}
И я получаю Неизвестную ошибку
на консоли. Но если я статически приведу литеральную строку к std :: string
или char *
он печатает Ошибка: не реализовано
, как ожидалось. Мой вопрос: так какой тип я должен поймать, если я этого не сделаю? Не хотите использовать статическое приведение?