Почему (потенциально) копируются исключения C++C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему (потенциально) копируются исключения C++

Сообщение Anonymous »

Из этого ответа и подобных страниц я узнал, что исключения могут быть скопированы в процессе создания. Я также узнал, что это копирование не должно вызывать никаких дополнительных исключений, иначе будет вызван std::terminate(). Это затрудняет написание классов исключений, поскольку, например. std::string может вызвать исключение при копировании.

Мой вопрос: почему C++ позволяет компилятору копировать исключения? В чем будет недостаток, если выбрасывать их по ссылке или указателю и требовать от программистов перехватывать их по ссылке или указателю, а не по значению?

Похоже, что решением могло бы стать обертывание любых нетривиальных членов во что-то вроде std::shared_ptr и копирование этого указателя вместо объекта, который он содержит. Но тогда мы теряем все потенциальные преимущества копирования (например, тот факт, что вы можете редактировать копию, в то время как оригинал остается неизменным). Так почему же C++ вообще настаивает на возможности копирования исключения?

Подробнее здесь: https://stackoverflow.com/questions/589 ... lly-copied
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»