1

通常我希望调试器在ArgumentOutOfRangeException.

但是在我的try catch(ArgumentOutOfRangeException)那个异常已经被处理了,所以我希望调试器不会中断。

我尝试了该DebuggerStepThrough属性,但它仍然中断。

4

3 回答 3

5

您可以通过设置调试器中断用户未处理的异常来做到这一点。

转到Debug -> Exceptions, Common Language Runtime Exceptions,取消勾选(取消选中)Thrown框。当然,您可以通过深入研究该列表来非常精确地了解您想要突破的内容。请注意,此设置在整个解决方案中生效,您不能为每个类或方法设置它。如果您确实希望对每个方法更具选择性,请考虑使用编译指令在调试期间不包含该位代码。

至于DebuggerStepThrough属性,就是防止断点断,与异常断无关。

于 2013-11-01T09:47:10.327 回答
1

有一种方法。首先禁用不属于您的调试代码。转到工具 > 选项 > 调试 > 常规 > 选择“仅启用我的代码(仅限托管)”。现在告诉调试器这个函数不是你的代码的一部分DebuggerNonUserCodeAttribute

    [System.Diagnostics.DebuggerNonUserCode()]
    private void FunctionThatCatchesThrownException()
    {
        try
        {
            throw new ArgumentOutOfRangeException();
        }
        catch (ArgumentOutOfRangeException ex)
        {
            //...
        }
    }

如果异常(不是ArgumentOutOfRangeException)从函数中出来,调试器将照常捕获它,但拦截的位置将是调用函数的位置。

于 2013-11-01T10:33:44.023 回答
1

您应该检查您的视觉工作室是否设置为中断所有异常

On the Debug menu, click Exceptions.

In the Exceptions dialog box, select Thrown for an entire category of exceptions,
for example, Common Language Runtime Exceptions.

Microsoft Visual Studio 帮助

于 2013-11-01T09:45:39.317 回答