Throw-catch机制与函数参数与返回值的区别

它俩有点像,但其实是两回事。
区别如下:
1、函数返回值是把执行流转向主调函数,而异常是把程序执行流转向函数调用序列上碰到的第一个包含try-catch块的函数。必须要注意,try-catch块是第一个对应于抛出的异常的try-catch块,如果catch不能捕获抛出的异常,则程序执行流就会继续找。
2、编译器在抛出异常的时候总是创建一个临时性异常类对象COPY,这是因为函数执行完以后,在它内部的throw obj;语句中的obj会随之消亡。但是,为了捕获异常,obj的消亡就显得不合理了,所以C++实际上是复制了一个obj给异常机制使用。所以即便catch中的参数是个引用也无法避免COPY的发生。另外,这也给使用异常类构造函数直接构造默认对象带来了方便,如下图所示:


你可能感兴趣的:(Throw-catch机制与函数参数与返回值的区别)