Скажем, я написал некоторую функцию myFunc, которая может генерировать исключения const char *:
void myFunc()
{
int returnCode = whatever();
if (!returnCode)
{
std::string msg;
msg.append("whatever function failed");
std::cerr << msg << std::endl; // print warning message
throw msg.c_str(); // throw warning message as exception
}
}
А потом использую вот так:
void myProgram()
{
try
{
myFunc();
}
catch(const char* str)
{
// is 'str' string memory valid here?
}
}
Я понимаю, что это не совсем хорошая стратегия для использования исключений: лучше генерировать и перехватывать классы исключений, а не строки. Но мне любопытно, какова здесь область охвата.