Исключения в C++ не хранятся как статически выделенные объекты. При возникновении исключения происходит следующее:
- Создается временный объект типа исключения.
- Этот объект передается механизму обработки исключений.
- Механизм раскрутки стека (stack unwinding) ищет подходящий обработчик (
catch).
- Если обработчик найден, он получает копию (по значению, по ссылке или по указателю) этого временного объекта.
Пример:
cpp