一般在C语言中,是通过返回值或者设置errno的方式来标识错误的
但在C++里面,构造函数是没有返回值的,于是发明了异常的方式:为了正确的向使用者表明
异常抛出的原因,你必须弄清楚异常抛出的原因(比如有的是内存分配的时候出错,有的是成员构造出错)
还有一点需要注意,析构函数,从实现上不该抛异常的,因为析构很多时候是在stack unwinding 的时候调用的
如果真的有析构出错的情况,程序也只能直接挂掉,所以自定义析构函数要十分小心