throw e对原异常进行拷贝,然后将新的异常对象抛出,这一步拷贝就有可能导致错误啦,拷贝出来的异常对象可能和原来的异常对象不是一个类型. 比如原来的对象是个子类的异常对象,catch里声明的是父类异常类型,能够catch住子类异常对象,但是throw e是,调用父异常类型的拷贝,再抛出就变成父类异常对象了 其他一些异常处理的tip: catch时参数列表使用引用类型,一是省资源,二是保证对原异常对象修改. 资源的分配和释放放在类的构造/析构函数里,可以避免异常退出时带来mem leakexc…