理解:'dll Name'中出现'Exception Name'类型的First Chance异常

时间:2010-12-19 09:05:24

标签: c# exception

我不时地在输出窗格中阅读它 简单地说,为什么以及何时发生这种情况?

2 个答案:

答案 0 :(得分:12)

如果抛出异常但随后被捕获,则会发生这种情况。框架的某些部分以令人沮丧的频率执行此操作......但通常您可以忽略它。如果它经常发生真的并且您认为它可能会影响性能,您可以随时尝试找出导致它的原因并查看是否有任何可以阻止它的事情 - 但根据我的经验,它通常是在完全正常的情况下发生:(

要查看它发生的位置,你会转到调试器选项并在抛出异常时立即中断 - 这样你应该得到一个堆栈跟踪,它至少会显示你的代码是否直接调用到框架中代码。

当然如果DLL是你控制之下的那个,那就是另一回事......那么你就有更多的机会弄清楚发生了什么:)

答案 1 :(得分:4)

Windows上的异常会被抛出两次。抛出第一次机会通知调试器。抛出第二次机会来通知异常处理程序(就像你在catch语句中放置的那样)。就像Jon Skeet提到的那样,如果异常没有达到第二次更改,则意味着它被调试器或其他组件捕获。要了解这是如何发生的,我建议您阅读有关结构异常处理和向量异常处理的更多信息。请参阅以下文章:

  1. SEH
  2. Vectored Exception Handling
  3. 希望有所帮助