理解:在“dll Name”中发生了“Exception Name”类型的第一次机会异常。

5

时不时地我会在输出窗格中读到这个信息。
简单来说,为什么会出现这种情况?何时会出现?

2个回答

12
如果抛出异常但随后被捕获,则会发生这种情况。框架的一些部分以令人沮丧的频率执行此操作...但通常可以忽略它。如果它发生得非常频繁,并且您认为它可能会影响性能,您可以尝试找出是什么原因并查看是否有任何方法可以阻止它-但根据我的经验,通常是在完全正常的情况下发生的 :(
要查看它发生的位置,请转到调试器选项并使其在异常被抛出时立即停止-这样,您应该可以获得一个堆栈跟踪,其中至少会显示是否有任何直接调用框架代码的代码。
当然,如果DLL是您控制的DLL,则情况就不同了......那么您就更有机会弄清楚发生了什么 :)

3
我认为在VS中按Ctrl+Alt+E,然后勾选大多数选项,你就可以看到所有异常发生的情况。 - Daniel B

4
在Windows上,异常会被抛出两次。第一次是通知调试器的机会。第二次是通知异常处理程序(比如你放在catch语句里的处理程序)的机会。所以,就像Jon Skeet所说的那样,如果异常没有到达第二次机会,那么这意味着它被调试器或其他组件捕获了。为了理解这是如何发生的,建议您阅读更多关于结构化异常处理和向量异常处理的文章。请参阅以下文章:
  1. SEH
  2. 向量异常处理
希望能对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接