通常我希望调试器在ArgumentOutOfRangeException
上中断。
但是在我的try catch(ArgumentOutOfRangeException)
内已经处理了异常,因此我希望调试器不会中断。
我尝试了DebuggerStepThrough
属性,但它仍然会中断。
答案 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.
答案 2 :(得分:1)
有一种方法。首先禁用不属于您的调试代码。转到工具>选项>调试>一般>选择“启用我的代码(仅管理)”。现在告诉调试器这个函数不是DebuggerNonUserCodeAttribute
代码的一部分:
[System.Diagnostics.DebuggerNonUserCode()]
private void FunctionThatCatchesThrownException()
{
try
{
throw new ArgumentOutOfRangeException();
}
catch (ArgumentOutOfRangeException ex)
{
//...
}
}
如果异常(ArgumentOutOfRangeException
以外的某些异常)离开函数调试器将像往常一样捕获它,但拦截的位置将是调用函数的位置。