当我调试一个C#程序并且我得到一个异常抛出(由代码抛出或由框架引发)时,IDE停止并让我到我的代码中的相应行.
现在一切都很好.
然后按"F5"继续.从这一刻起,它就像我在无限循环中一样接缝.IDE总是让我回到异常行.我必须Shift+ F5(停止调试/终止程序)才能离开他.
我在这里与一些同事交谈,他们告诉我,这种情况也会发生在他们身上.
发生了什么?
您可能在Visual Studio中选中" 在未处理的异常上展开callstack "选项.当此选项打开时,Visual Studio将在异常之前展开,因此命中F5将保持撞击到同一个异常.
如果取消选中Visual Studio将在异常处断开的选项,但点击F5将继续超过该行.
此选项位于菜单工具 → 选项 → 调试 → 常规下.
这是因为异常是未处理的,并且Visual Studio在没有以某种方式处理的情况下无法移过该行.简单地说,它是设计的.
您可以做的一件事是将执行点(黄线/箭头)拖放到代码中的前一个点并修改内存值(使用Visual Studio监视窗口),这样它们就不会导致异常.然后再次开始逐步执行代码1.
虽然停止执行并修复导致异常的问题,但如果不需要抛出则正确处理异常,这是一个更好的主意.
1这可能会产生意想不到的后果,因为您实际上是在重新执行某些代码(而不是重写执行).