直觉告诉我抛出的类型越简单越好。抛出一个 int 比抛出一个指针更好,抛出一个结构比抛出一个类更好。在这种情况下,尽管有必要抛出一个带有动态分配成员的几乎完整的类。在堆中分配内存很方便,因为缓冲区可能会变得很长并且复制很昂贵;它不需要方法,因为它充当其他对象的控制/参数结构,但是在堆中构建它以抛出指向结构的指针和使用析构函数来清理内存都很方便。越简单越好,那么析构函数应该是虚拟的吗?省略 vtable或vtables完全不影响异常传递会更好吗?
从此结构派生类作为基类的优点是添加更多数据,而不是多态方法。指针可能会在异常点前几层被捕获并在模块之间传递,因此对象应尽可能干净,并尽可能降低复合错误的风险。