15.了解异常处理的成本

为了处理异常,程序必须做到:

  • 无论执行至何处,都应该明确此时如果抛出异常将释放哪个对象
  • 知晓每一个入口点,以便从try块退出
  • 对于每一个try,继续跟踪catch子句以及其能够捕获的异常类型

如果你确保你的程序根本不使用异常,链接的程序库里也没有异常,那你可以使用不支持异常处理的方法进行编译,从而缩小程序尺寸和提高速度。

一般来说,每一个try块都降低了速度并且增大代码尺寸,因此应该避免使用无用的try块。同样的,异常明细的成本和try块相差不大。

总的来说,真正处理异常的开销仅仅发生于异常出现,(异常本身就是难于出现的)因此我们无需在效率上顾虑太多,遵循之前所提及的各项要求即可。(More Effective C++ 9~14)