Visual studio Visual Studio调试-在一个位置忽略异常,而在其他位置中断异常?

Visual studio Visual Studio调试-在一个位置忽略异常,而在其他位置中断异常?,visual-studio,debugging,exception,Visual Studio,Debugging,Exception,我有一些代码,它在一个特定的行上生成大量的异常(在另一个开发人员的代码中,所以我不能仅仅更改它),然后捕获并适当地处理这些异常 我试图调试在不同代码段中发生的异常(然后捕获并处理,所以我不能只查看未处理的异常) 是否有某种方法可以忽略源自另一行代码的ArgumentException,同时仍然中断其他地方抛出的ArgumentException?如果您知道如何调用它,我会在代码中设置断点,然后从那里进入(F11)。你也可以打程序员,直到他们修改他们的代码,这会让你感觉更好(除非你是和平主义者),

我有一些代码,它在一个特定的行上生成大量的异常(在另一个开发人员的代码中,所以我不能仅仅更改它),然后捕获并适当地处理这些异常

我试图调试在不同代码段中发生的异常(然后捕获并处理,所以我不能只查看未处理的异常)


是否有某种方法可以忽略源自另一行代码的ArgumentException,同时仍然中断其他地方抛出的ArgumentException?

如果您知道如何调用它,我会在代码中设置断点,然后从那里进入(F11)。你也可以打程序员,直到他们修改他们的代码,这会让你感觉更好(除非你是和平主义者),也许他们的代码中不会有这么多例外(即使你是和平主义者,这也可能让你感觉更好)。

如果你说的是“一扔就破”异常功能则不存在。严格来说,它只是一个基于类型的特性,无法控制代码的哪个部分引发异常


最好的办法是在所有抛出异常的行上放置断点,或者暂时暂停从您关心的位置抛出异常

听起来像是使用异常作为流控制。如果您尝试调试的调试程序发生在程序的后面,您可以稍后尝试附加调试器,或者可以等到程序运行后,在引发ArgumentException时启用breaking

试着限制范围——如果你感兴趣的异常源于ArgumentException,但并不完全是ArgumentException,那么就打断它

告诉其他开发人员修复他的代码


编辑:在.NET 4中,您可以将处理程序附加到事件,过滤掉非ArgumentException异常,并根据调用堆栈过滤掉坏的异常。

注释中的链接非常棒


我认为条件断点是您在这里寻找的。您可以通过右键单击断点并单击条件来执行此操作。。。菜单项。

您可能可以执行此操作,但这取决于要调试的代码相对于其他开发人员的代码的位置,以及您是否可以修改(但不能提交更改)他的代码

您要做的第一件事是,至少暂时进入VisualStudio中的菜单工具->选项->调试,并勾选“仅我的代码”框。我想这即使是在速成版中也可以使用,但可能不是,如果你不能使用,我恐怕我要说的其余部分可能不会有帮助

无论如何,一旦勾选了该选项,您将不再看到非“您的”代码的中断抛出通知。这意味着代码来自不在.sln中的程序集,或者来自
系统.Diagnostics
的标记有
[DebuggerNonUserCode]
属性的代码。然后,我通常会使用
[DebuggerNonUserCode]
临时装饰有问题的方法,直到调试完需要调试的内容,然后在签入souce控件之前还原这些更改

它不像我想要的那么优雅(我希望在异常助手中有一个“从此站点再次抛出永不中断”复选框),但总比什么都没有好


我相信可能还有其他调试器设置可以与“仅我的代码”的工作方式交互,因此,如果这对您不起作用,请让我知道,我将尝试更准确地了解执行此操作时我的设置是什么样子。

在某些Visual Studio Express版本的“选项”对话框中,“仅我的代码”选项不可用(虽然是Visual C 2010的Express),但是它可以通过其他方式来改变:注意,当该选项对C++也是可用的时,它对异常没有影响,如这里所描述的:奇怪的是,[Debug GuangUnServer代码]仍然停止父函数中的调试器:@crokusek您可能遇到了他们对Visual Studio 2015所做的更改,该更改改变了调试器中此属性的行为。Anthony刚刚赢得了互联网!!!好吧…StackOverflow,不是互联网。是的,很好…考虑到这一点,“just”可能有点用词不当这已经是4年半以前的事了,但是……好吧……呃……哦,算了吧。接受胜利,继续前进吧!不幸的是,Visual Studio调试器不如GDB好;特别是,如果我们不希望出现异常,您不能将命令设置为异常以检查条件并继续。