Web Analytics
yangyang

码农兼一个普普通通小青年

Exceptions


“异常”应该仅用于真正的异常情况而不应将其当作正常处理流程来使用

在《Writing High-Performance .NET Code》这本书中,作者指出,抛出“异常”(Exception)的开销十分高昂,很大一部分原因是.NET的异常对象中包含了丰富的信息,“异常”必须是为真正的异常情况服务,在这种情况下性能可以退居其次。 作者还举了例子,说明了三个事实: 抛出“异常”的方法比空方法慢了数千倍。 “异常”抛出的层数越深,速度就越慢。 和只用1个catch相比,多个catch语句的影响比较轻微,但仍然影响很明显。 使用catch捕获异常的开销可能不大,但是要访问Exception对象的StackTrace属性开销可能会非常高。因为需要由“异常”指针重建调用栈,并转译成可读文本。作者反复强调,“异常”应该仅用于真正的异常情况,如果将“异常”作为正常的处理流程来使用,会让程序毫无性能可言。 …

Exceptions

  • 1