当前位置: 首页 > 编程语言 > C#

调试控制台应用程序时,VisualStudio陷入异常报告循环,为什么?

时间:2023-04-11 01:08:29 C#

调试控制台应用程序时,VisualStudio陷入异常报告循环。为什么?考虑这个使用系统的简单控制台应用程序;namespaceDemo{classProgram{staticvoidMain(string[]args){thrownewException();我在VisualStudio2010或VisualStudio2012Beta的调试器下运行它。当我这样做时,调试器自然会在异常处停止。好的到目前为止。但是当我按F5继续(或选择调试|继续)时,它再次停止并出现相同的异常。我必须停止调试器才能退出。当我按F5时,我希望程序退出。有谁知道它为什么这样做?[编辑]我已将回复标记为答案,但要查看调试器行为的奇怪后果,请考虑以下代码:namespaceDemo{classProgram{staticvoidMain(string[]args){AppDomain.CurrentDomain.UnhandledException+=CurrentDomain_UnhandledException;抛出新的异常();}staticvoidCurrentDomain_UnhandledException(objectsender,UnhandledExceptionEventArgse){Console.WriteLine("UnhandledException.");}}}在调试器下运行这条命令,按一次F5,输出。您会看到很多“未处理的异常”消息,即使代码实际上只抛出一次。调试器导致多次抛出异常!这就是我觉得奇怪的地方。你能指望什么?考虑以下方法:privatevoidTest(){thrownewException();诠释你=4;抛出异常时,调试器允许您导航到调用上下文以查看程序是否捕获到异常。如果不是这种情况,它永远不会通过跳过异常退出Test方法,这就是为什么intu=4;无法连接。在您的示例中,它是相同的:privatestaticvoidMain(string[]args){thrownewException();//如果我在这里,我将退出应用程序!//Butthisplaceisunreachable}因为你的异常,你不能退出Main方法的作用域。这就是为什么在使用F5调试时无法退出应用程序的原因。如果您没有附加调试器,您的应用程序当然会因未处理的异常而崩溃,但那是另一回事了。它不会那样做。如果应用程序未在调试器中运行,则会出现“应用程序意外退出”对话框-但不会出现在VisualStudio中。虽然我不确定它为什么这样做,但可能是因为它让您可以选择将“当前正在执行的行”箭头??(黄色数组)移动到应该执行的下一行并恢复操作。否则,是的,您需要明确停止该应用程序。VS2012调试器不会继续处理未处理的异常默认情况下,调试器会在所有未捕获的异常(即未处理的)上停止-这可以在“异常”对话框中更改(CTRL+ALT+E,使用我的键绑定)以上是C#学习教程:调试控制台应用程序时,VisualStudio会陷入异常报告循环。为什么?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: