debugging 为什么Visual Studio有时会禁止代码在出错后继续执行?

gorkyyrv  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(100)

当Visual Studio在控制台应用程序中遇到未处理的错误时中断时,它不会让执行继续正常进行,因此您必须以某种方式解决错误(例如在“立即”窗口中设置一个值以避免空引用错误),或者您必须将下一个要执行的语句设置为另一行代码,或者完全结束执行。
在ASP.NET应用程序中,通常不是这种情况。它通常会允许您继续执行,这通常会导致您的浏览器转到错误页面。然而,在某些情况下,我发现它不这样做,我必须重新启动我的应用程序,而不是让它继续到错误页面。
我得到的一个选项是取消选中“当抛出此异常类型时中断”,但当然我不想这样做,因为我确实希望它中断…我只是想让它继续后,它打破了,我打F5。
目前我处于这种情况下,这是非常烦人的,因为它是在一个lambda表达式上,我不能(或者我认为不可能)改变下一个要执行的语句,以克服错误,这意味着我必须结束执行并重新启动应用程序。
在这种情况下,阻止Visual Studio继续执行的逻辑是什么?是否有任何解决方案,我错过了,将允许我继续没有重新启动应用程序?

2fjabf4q

2fjabf4q1#

有几种方法可以获得调试中断和弹出窗口:

  • 您触发了一个异常,但它是在上游某处的try..catch中处理的。只有在显式地启用异常列表中的异常时,您才能获得中断和弹出窗口,并且可以安全地从它继续到异常处理程序。
  • 您触发了一个异常,但它根本没有被任何东西处理。在这种情况下,无论您的异常过滤器设置如何,您都将始终得到异常弹出窗口,并且您将无法从那里继续。您的应用程序正式死亡,下一条指令将终止它,无论您在内存中编辑什么。由于堆栈状态不稳定,您所能做的就是检查应用程序的状态并执行一些有限的操作。
  • 您触发了一个 native 异常,例如访问冲突或堆栈溢出。这是“坏”,再一次没有回来。但更糟糕的是,因为托管堆栈跟踪不再可访问,您被困在本机世界中,下一条指令将终止您的应用程序。

相关问题