Реалізація може відрізнятися, але є кілька основних ідей, які випливають із вимог.
Сам об'єкт винятку - це об'єкт, створений в одній функції, знищений в її абоненті. Отже, як правило, неможливо створити об'єкт у стеку. З іншого боку, багато об’єктів винятків не дуже великі. Ерго, можна створити, наприклад, 32-байтний буфер і переповнення до купи, якщо насправді потрібен більший об'єкт винятку.
Що стосується фактичної передачі контролю, існує дві стратегії. Одним з них є запис достатньої кількості інформації в сам стек, щоб розмотати стек. В основному це список деструкторів для запуску та обробників винятків, які можуть вловити виняток. Коли трапляється виняток, запустіть стек, що виконує ці деструктори, поки не знайдете відповідний улов.
Друга стратегія переміщує цю інформацію в таблиці поза стеком. Тепер, коли трапляється виняток, стек викликів використовується, щоб дізнатись, які області вводяться, але не виходять. Потім їх шукають у статичних таблицях, щоб визначити, де буде оброблено викинутий виняток і які деструктори запускаються між ними. Це означає, що накладні витрати на стек зменшуються; зворотні адреси все одно потрібні. Таблиці - це додаткові дані, але компілятор може розмістити їх у завантаженому попитом сегменті програми.