Если вы поймали исключение по ссылке, можете ли вы изменить его и перевыбросить?

Есть ли в стандарте что-нибудь об исключении, пойманном по ссылке, и что происходит с попытками изменить его?

Рассмотрим следующий код:

class my_exception: public std::logic_error
{
public:
    std::vector<std::string> callstack;
};

void MyFunc()
{
    try
    {
        SomethingThatThrows();
    }
    catch (my_exception & e)
    {
        e.callstack.push_back("MyFunc");
        throw;
    }
}

Это надуманный пример, на самом деле я не пытаюсь сделать что-то подобное. Мне просто интересно, что произойдет, исходя из предложения в другой теме, что исключения должны перехватываться по const ссылке.

20
задан Mark Ransom 12 December 2011 в 21:30
поделиться