如果处理了特定异常,如何防止中断

时间:2013-11-01 09:40:14

标签: c# exception

通常我希望调试器在ArgumentOutOfRangeException上中断。

但是在我的try catch(ArgumentOutOfRangeException)内已经处理了异常,因此我希望调试器不会中断。

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

3 个答案:

答案 0 :(得分:5)

您可以通过将调试器设置为中断用户未处理的异常来执行此操作。

转到调试 - > 异常,公共语言运行时异常,取消勾选(取消选中) Thrown 框。当然,通过深入查看该列表,您可以非常精确地了解您想要打破的内容。请注意,此设置在整个解决方案中生效,您无法按类或方法进行设置。如果你确实希望每个方法更具选择性,那么考虑使用compile指令在调试时不包含那段代码。

对于DebuggerStepThrough属性,即防止断点中断,与打破异常无关。

答案 1 :(得分: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 Help

答案 2 :(得分:1)

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

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

如果异常(ArgumentOutOfRangeException以外的某些异常)离开函数调试器将像往常一样捕获它,但拦截的位置将是调用函数的位置。