在Visual Studio 2017中的未处理exception后启用编辑

如何在Visual Studio 2017中出现未处理的exception后继续执行?

在2015版及更低版本中,通过单击“ Enable Editing ”可轻松完成此操作,该“ Enable Editing ”将“调用堆栈展开到exception之前的点”。 然后可以编辑执行点,变量和代码。


当库抛出exception时,此选项消失:

在此处输入图像描述

 "".Substring(1); 

如果用户代码中发生exception,它仍然有效:

在此处输入图像描述

 int x = 0; Console.WriteLine(1 / x); 

注意可以拖动的黄色箭头。


我真的希望这个function没有被删除,因为挽救一个崩溃的程序(这里,通过设置x = 1 ,例如,更改字符串常量或跳过有问题的行)是我做了很多事情。 现在我在这种状态下完成了99%的多小时操作,我真的很想通过抑制一个不重要的错误来拯救它。

这是.NET 4.6.1上的Visual Studio 2017 build 26228。

在VS2017中,隐藏并自动触发旧的“启用编辑”。 在调试时,如果我执行以下操作,我可以在未处理的exception之后编辑代码/变量:

  1. 单击文档以关注新的Exception Helper
  2. 点击空格键(或您最喜欢的键!)

要么

  1. 拖动黄色箭头(库的绿色箭头)。

在按键或移动箭头之前,文件选项卡上有挂锁,告诉您它已被编辑锁定。 之后,锁定被移除,就像旧的“启用编辑”function一样。 删除编辑锁的第一次击键没有输入到文件中,之后,编辑代码和变量的行为与以前一样。

我比以前更喜欢显式的“启用编辑”链接,希望他们把它带回来。

一次又一次地遇到这个问题,自从我切换到2017年以来,我终于找到了这个问题,并发现它实际上适用于“我的代码”中的exception。 谢谢你教育我!

但我也想知道它是否也不适用于“绿色箭头”,它现在实际上有效! 我正在运行15.2,所以如果它对你不起作用,也许尝试升级到最新版本。

您可以让应用程序不向调试器发送exception:

Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);

在VS 2017中为我工作。