C#学习教程:为什么VisualStudio在调试UnhandledException异常时循环在这里被捕获,只是一个机会记录一些东西)我有一些非常简单的C#代码设置UnhandledException事件处理程序然后抛出异常:[]args){AppDomaincurrentDomain=AppDomain.当前域;//currentDomain.UnhandledException+=newUnhandledExceptionEventHandler(currentDomain_UnhandledException);currentDomain.UnhandledException+=(sender,eventArgs)=>{varexception=(Exception)eventArgs.ExceptionObject;Console.WriteLine("未处理的异常:"+exception.Message);};抛出新的AccessViolationException("Bleurgh");它的行为符合我对控制台的预期:未处理的异常:Bleurgh未处理的异常:System.AccessViolationException:BleurghatUnhandledExceptions.Program.Main(String[]args)inc:codesandboxUnhandledExceptionsUnhandledExceptionsProgram.cs:line20但是当我尝试在VisualStudio中调试它进入循环,进入事件处理程序,然后退出out重新抛出异常当我将处理程序表示为不同的静态方法时,同样的事情也会发生。任何想法发生了什么?这是在VisualStudio2010中。编辑:和.NET4。它似乎取决于ExceptionAssistant的行为。当您继续时,帮助程序会将调用堆栈展开到抛出异常的位置-这会导致重新抛出异常。我假设这是为了让您进行更改以避免异常。如果您取消选中“工具选项调试器常规”下的“Unwindcallstackonunhandledexception”,那么它的行为就像一个独立的进程,您将看到进程终止。这就是调试器的工作方式,或者我们应该说一个“函数”。如果进程是由调试器(F5)创建的,调试器将阻止进程终止并指向可能导致进程终止的代码行。那些“未处理的异常”实际上是由调试器处理的,因此执行永远不会到达您的代码。如果在创建进程后将调试器附加到进程上(Ctrl+F5,然后attach),调试器最终会到达未处理的异常“handler”,但退出handler后,仍会阻止进程终止,并带来你回到异常发生的地方。以上是C#学习教程:调试UnhandledException事件时,为什么VisualStudio会循环遍历所有共享的内容?如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文来自网络收藏,不代表立场,如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处:
