1-10 使用异常造成的开销

1.10 使用异常造成的开销

一个throw表达式就像是一个特殊的系统函数调用,它接收异常对象作为参数并且沿着执行调用链向上回溯。为了完成这项工作,编译器需要在栈上放置额外的信息,来辅助栈反解过程。

典型情况下异常(应该)只构成程序的很小一部分,其空间开销是相当小的(通常只占总开销的5%~15%)。

详见:异常导致栈结构的额外开销

除了空间开销,异常也会导致压栈操作导致的额外时间开销,但是如果编译器使用的是零代价模型则不存在时间开销。