Интуиция говорит мне, что чем проще брошенный тип, тем лучше.Лучше бросить int, чем указатель, лучше бросить структуру, чем класс.В этом случае, однако, необходимо создать почти полный класс с динамически размещаемыми членами.Удобно выделять память в куче, потому что буферы могут стать довольно длинными, а копирование будет дорогим;ему не нужно иметь методы, потому что он действует как структура элемента управления / аргумента для других объектов, но удобно как встроить его в кучу, чтобы бросить указатель на структуру, так и иметь деструктор для очистки памяти.Чем проще, тем лучше, так должен ли деструктор быть виртуальным?Лучше ли опускать vtable или vtables не влияют на при исключении, передаваемом ?
Преимущество извлечения классов из этой структуры в качестве базового класса состоит в том, чтобы добавлять больше данных, а не к полиморфным методам.Указатель может потенциально быть пойман на несколько уровней вперед от точки исключения и передаваться между модулями, поэтому объект должен вести себя настолько чисто, насколько это возможно, и иметь как можно меньший риск возникновения ошибок.