构造函数
缺点: 不能通过返回值报告错误,C++异常机制又不靠谱; 二级段构造可以分离内存分配和初始化,可以在栈上分配对象;
优点: 二阶段构造函数,使得对象处于未构造的不确定状态;
析构函数
缺点: 析构函数不能调用虚方法;
优点: 值语义下会自动调用析构函数;
异常机制
缺点: 中途排除的异常导致资源泄露(就是用auto_ptr的情况); 代码大小和运行效率影响;
优点: 错误不可忽略,增强健壮性; 错误逻辑和正常逻辑分离,增强可读性; 错误信息丰富;
总之是C++异常机制不好,不是异常机制本身不好。至于说异常机制容易引起奔溃的说法,是对异常的误解。