例外 - 真正发生了什么?

时间:2015-03-28 14:27:47

标签: c# .net exception clr seh

我已经看过很多文章和问题,所有文章都集中在例外的成本,性能基准,等等。

但似乎没有什么能解释为什么它如此缓慢。在引擎盖下真正发生了什么,以便在抛出一个时它的速度变慢。大多数文章都说堆栈展开是让它变慢的原因。但我不明白为什么这会使它的速度变慢。

从对SEH的简要理解,基本上每当一个线程进入一个try块时,它就会在TIB的Exception Chain上添加一些标记到该位置。这有其成本,同时试图走回堆栈。我明白那一部分。但我怀疑,考虑到性能损失的严重程度,这甚至只是故事的一半。此外,如果异常被捕获在同一个函数中,为什么你甚至必须展开堆栈。为什么这种情况仍然同样缓慢?

有人可以用简单的术语解释一下究竟发生了什么吗?

0 个答案:

没有答案