什么是第一次机会异常?它在 .NET 程序中是如何产生的?为什么它被称为这个奇特的名字(我们说的什么“机会”)?
什么是第一次机会异常?它在 .NET 程序中是如何产生的?为什么它被称为这个奇特的名字(我们说的什么“机会”)?
这是一个调试概念。基本上,异常首先被抛给调试器,然后再传递到实际程序中,如果未被处理,则会再次抛回到调试器中,从而使您有机会在应用程序本身之前和之后在IDE中处理异常。这似乎是微软Visual Studio的发明。
"First chance exception messages most often do not mean there is a problem in the code."
从开发者的角度来看,第二次机会异常更令人担忧,因为这意味着代码中没有处理它;因此应用程序将停止。
第一次机会可能有很多,但从开发角度来看,更需要关注的是第二次机会,因为它会导致应用程序崩溃。
当应用程序进行调试时,每当遇到异常时,调试器都会被通知。此时,应用程序被暂停,调试器决定如何处理异常。这个机制的第一次通过称为“第一次机会”异常。
根据调试器的配置,它将恢复应用程序并传递异常,或者保持应用程序暂停并进入调试模式。如果应用程序处理异常,则继续正常运行。
第一次机会异常消息通常不意味着代码存在问题。对于能够优雅地处理异常的应用程序/组件,第一次机会异常消息让开发人员知道已经遇到了一种异常情况,并已经处理过了。
finally
块运行之前。一旦系统决定谁将捕获异常(并确定确实有人会),系统将开始展开堆栈。请注意,如果从finally
块中抛出异常... - supercatcatch
块,程序的控制权将转移到那里。如果没有catch
块,则会发生 "second-chance" 中断,这次消息是 An unhandled exception of type 'foo' occurred in YourApp.exe。从这里开始,尝试继续执行或向前步进都不会成功。 - Jeppe Stig Nielsen