通常我希望调试器在ArgumentOutOfRangeException
.
但是在我的try catch(ArgumentOutOfRangeException)
那个异常已经被处理了,所以我希望调试器不会中断。
我尝试了该DebuggerStepThrough
属性,但它仍然中断。
通常我希望调试器在ArgumentOutOfRangeException
.
但是在我的try catch(ArgumentOutOfRangeException)
那个异常已经被处理了,所以我希望调试器不会中断。
我尝试了该DebuggerStepThrough
属性,但它仍然中断。
您可以通过设置调试器中断用户未处理的异常来做到这一点。
转到Debug -> Exceptions, Common Language Runtime Exceptions,取消勾选(取消选中)Thrown框。当然,您可以通过深入研究该列表来非常精确地了解您想要突破的内容。请注意,此设置在整个解决方案中生效,您不能为每个类或方法设置它。如果您确实希望对每个方法更具选择性,请考虑使用编译指令在调试期间不包含该位代码。
至于DebuggerStepThrough属性,就是防止断点断,与异常断无关。
有一种方法。首先禁用不属于您的调试代码。转到工具 > 选项 > 调试 > 常规 > 选择“仅启用我的代码(仅限托管)”。现在告诉调试器这个函数不是你的代码的一部分DebuggerNonUserCodeAttribute
:
[System.Diagnostics.DebuggerNonUserCode()]
private void FunctionThatCatchesThrownException()
{
try
{
throw new ArgumentOutOfRangeException();
}
catch (ArgumentOutOfRangeException ex)
{
//...
}
}
如果异常(不是ArgumentOutOfRangeException
)从函数中出来,调试器将照常捕获它,但拦截的位置将是调用函数的位置。
您应该检查您的视觉工作室是否设置为中断所有异常
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.