在发生exception之后继续在Visual Studiodebugging器中

当我debugging一个C#程序,并得到一个exception抛出(或由框架引发的代码抛出),IDE停止,并让我到我的代码中的相应行。

现在一切都很好。

然后按“F5”继续。 从这一刻起,它就像我在无限循环中一样。 IDE总是让我回到例外行。 我必须Shift + F5 (停止debugging/终止程序)摆脱他的。

我在这里和一些同事交谈,他们告诉我,这也发生在他们身上。

发生了什么?

这是因为exception是未处理的,并且Visual Studio无法以某种方式处理该行。 简而言之,这是devise。

你可以做的一件事是将执行点(黄线/箭头)拖放到代码中的前一个点,并修改内存值(使用Visual Studio监视窗口),以避免引发exception。 然后再次开始通过代码1

尽pipe停止执行并修复引起exception的问题是一个比较好的做法,或者如果抛出exception,则应该正确处理exception。

1这可能会产生意想不到的后果,因为你本质上是重新执行一些代码(而不是倒退执行)。

您可能有选项“ 展开对未处理的exception的调用堆栈 ”在Visual Studio中选中。 当这个选项被打开的时候,Visual Studio会在exception之前退出,所以按F5将会保持同样的exception。

如果您取消选中Visual Studio将exception中断的选项,但按F5将继续该行。

该选项位于菜单工具选项debugging常规下

当IDE在违规代码行中断时,它会在执行产生该exception的行之前停止。 如果继续,它将再次执行该行,并再次得到exception。

如果你想移动过去的错误,看看会发生什么,如果错误没有发生,你可以拖动黄色突出显示的行(下一个将执行的行)到下一行的代码。 当然,根据违规行不能做什么,你的程序现在可能处于导致其他错误的状态,在这种情况下,你并没有真正地帮助自己,也许应该修复你的代码,以便例外不会发生,或处理得当。

一旦你得到一个exceptionVisual Studio(或者你可能使用的任何IDE)不会让你走,除非在你的代码中处理exception。

这是行为devise​​。

未捕获的exception会导致您的应用程序。 而不是这个,VS会把你留在未捕获的exception,你将不得不终止或逆风你的应用程序。