我听说过你应该避免尝试catch块的建议,因为它们很贵。为什么试块价格昂贵?
我的问题是关于.NET平台的具体问题:为什么尝试块价格昂贵?
回应摘要:
显然有关于这个问题的两个阵营:那些说try块是昂贵的,那些说“也许一个小小的一点”。
那些说try块是昂贵的,通常会提到解除调用堆栈的“高成本”。就我个人而言,我并不相信这一说法 - 特别是在阅读了关于异常处理程序如何存储的信息之后here。
乔恩Skeet坐在“也许是一个小小的”阵营,并写了两篇关于例外和性能的文章,你可以找到here。
有一篇文章我觉得非常有趣:它谈到了try块的“其他”性能影响(不一定是内存或cpu消耗)。 Peter Ritchie提到他发现try块内的代码没有被编译器优化。你可以阅读他的发现here。
最后,还有一个关于在CLR中实现异常的人的博客条目。去看看克里斯布鲁姆的文章here。
另外,扫描调试数据以解析打印堆栈跟踪的方法名称和行号会增加很多开销。 – 2008-10-03 00:05:48
非常真实。根据.pdb文件的存在与否,您会看到很大的差异。 – 2008-10-03 03:07:19