В: Безопасно ли бросить и поймать исключение в стеке, или приложение вызывает terminate
во втором броске?Безопасно ли бросать/ловить на стеке?
минимальный пример:
void some_function()
{
try
{
// do stuff here that can throw
throw std::runtime_error("blah");
} catch(const std::exception& re)
{
try // this code could be in some function called from here
{
// do something with re here that throws a logical_error
throw std::logical_error("blah blah"); // does this call terminate?
} catch(const std::logical_error& le)
{
}
}
}
Я получил любопытный после прочтения this question.
Примечание: Я знаю, что вы можете/должны catch(...)
в разрушителя, но это имеет смысл вообще иметь в catch
блоке с try/catch
- может быть, в какой-то функции, называемой на исключение (re
в моем примере)?
На самом деле это не во время штабелирования, хотя, верно? AFAIK, как только будет введен блок catch, стек уже размотан. – Pubby
Ahh ... thanks :) Если вы добавите его в качестве ответа, я его приму. – utnapistim
Не нужно закрывать, я могу ошибаться. Мой комментарий был скорее предположением. – Pubby