如何关闭针对自定义异常类型的“抛出异常时中断”功能

30

我正在进行一些调试工作,希望开启“抛出异常时中断”选项。有一个第三方程序集我依赖,它经常抛出异常。其中一些异常,如SynchronizationLockException,可以通过Debug -> Exceptions 菜单关闭。

问题是它们还有一些自定义的异常类型。有没有办法关闭这些异常?

3个回答

39
Debug > Exceptions 对话框中,点击 Add,选择 Common Language Runtime exceptions,并输入异常的完整名称(而非程序集限定名)。然后取消这个异常的 Thrown 复选框。

10
在VS2015中,还有一个选项是等待异常被触发,然后在异常帮助窗口中取消勾选“抛出此异常类型时中断”复选框。 - jnm2
1
有没有一种方法可以在项目的成员之间共享这个? - J4N
@J4N 不是的,这是每个用户的设置。从技术上讲,你可以通过将 .vs 文件夹 / .suo 文件提交到仓库来共享它,但我不建议这样做,因为开发人员会一直覆盖彼此的首选项。 - Thomas Levesque

8
在Visual Studio 2019中,当出现异常时会弹出信息对话框。只需取消“当此异常类型未被用户处理时中断”的选中即可。exception dialog

4

我认为你可以尝试取消勾选此选项:<不在此列表中的所有公共语言运行时异常>

Uncheck

在这种情况下,大多数 .NET Framework 内置的异常都会中断,但不包括那些未出现在列表中的自定义异常类型。
如果您发现更多希望中断的异常类型,可以右键单击“公共语言运行时异常”,然后添加更多类型以中断:

Add types to break


谢谢尝试,但它并没有起作用。这并不奇怪,因为关闭所有CLR异常对我也没有用。 - William Jockusch
如果我正确理解问题的要求应该是“默认情况下在大多数异常情况下中断,但我希望能够有效地禁用一组自定义异常,而不是逐个禁用。”使用上述配置,它将在常见的.NET内置异常上中断,但对于自定义异常则继续执行。或者我理解问题有误吗? - victor6510
哇,看起来我读错了问题。好吧。然而,更进一步的问题是,当我取消选中该选项时,它仍然会在自定义异常上中断,至少对我来说是这样。 - William Jockusch
有趣的是,今天VS对我来说正在尊重那个复选框。昨天它没有。我从16.10.x升级到了16.11.4。我不知道这是否是原因。 - William Jockusch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接